I/O Stream设计实验

news2025/4/27 4:18:42

实验要求和目的

深入理解java输入输出流相关类的基本用法,并且可以掌握Java程序的编写和调试。

实验环境

Java语言,PC或android平台

实验具体内容

设计和编写以下程序:

程序1:

  1. 从键盘读入多行字符串(英文),并将其写入到一个文本文件(如学号1.txt)中。
  2. 统计字符串中所有的字符个数,并且显示个数信息。(在步骤1的文档中显示字符个数统计信息)如,this document contains XX bytes in total.

程序2:

  1. 从1中文本文件读取所有的字符串。
  2. 将内容在命令行窗口显示出来(要求去掉所有空格)。

实验步骤

对于程序一:

         实验要求我们从键盘输入多行文字,并存储在一个文件中,并统计字符的个数

首先定义一个文件的地址

在为此地址建立一个文件写入流

之后便可写入相关内容,定义一个循环,每次都输入一行文字,当一行输入仅为”over”时意味着写入结束,并输出文件的字符总大小

至此,文件写入结束,关闭写入流即可

对于程序二:

实验二要求我们在命令行中输出在程序一中所写入的除空格外的全部内容

首先,根据程序一中的文件地址创建一个字节输入流对象

对文件内容进行逐个读取字符,若字符为空格,跳过不再输出

        

至此,输出结束,关闭输入流即可

源代码

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Objects;
import java.util.Scanner;

/*
test
I love China
And I love ShenZhen University
But I don't think it is right
over
 */
//本包HW9的文件地址:"D:\IntelliJ IDEA 2023.2.5\test\HW9\Exercise.txt"
public class Q1 {
    static void input(String str) throws IOException {
        FileOutputStream f = new FileOutputStream(str, false); 
	//append:在原有基础上添加内容
        //写入内容
        Scanner r = new Scanner(System.in);
        String s;
        s = r.nextLine();
        int num = 0;
        //when you input 'over', it would be ended
        while (!Objects.equals(s, "over")) {
            f.write(s.getBytes());
            num += s.length();
            s = r.nextLine();
            f.write('\n');
        }
        System.out.println("this document contains " + num + " bytes in total.");
        f.close();  //资源释放
    }

    public static void main(String[] args) throws IOException {
        String str = "D:\\IntelliJ IDEA 2023.2.5\\test\\HW9\\Exercise.txt";
        input(str);
    }
}
import java.io.*;
//本包HW9的文件地址:"D:\IntelliJ IDEA 2023.2.5\test\HW9\Exercise.txt"
public class Q2 {
    static void output(String s) throws IOException {
        //字节输入流
        FileInputStream f = new FileInputStream(s);

        //读取方法:逐步读取法,一个一个字符进行读取
        int a;
        while((a=f.read())!=-1) {
            if ((char) a != ' ')
                System.out.print((char) a);
        }
        f.close();
    }
    public static void main(String []args) throws IOException {
        String str="D:\\IntelliJ IDEA 2023.2.5\\test\\HW9\\Exercise.txt";
        output(str);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1823121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生产运作管理--第六版陈荣秋

第一章: 生产运作的分类有哪些? 答:可以分为两大类: 产品生产: 产品生产是通过物理或者化学作用将有形输入转化为有形输出的过程。 按照工艺过程的特点,可以分为: 连续性生产:物料均匀、连续的按…

右值引用和移动语义

什么是左值?什么是右值? 通俗来讲,可以出现在赋值语句左侧的,为左值;只能出现在赋值语句右侧的,为右值。 左值与右值的本质区别在于:左值能取地址,但右值不能。 本文主要通过三个场景…

Commons-io工具包与Hutool工具包

Commons-io Commons-io是apache开源基金组织提供的一组有关IO操作的开源工具包 作用:提高I0流的开发效率。 FileUtils类(文件/文件夹相关) static void copyFile(File srcFile,File destFile) 复制文件 static void copyDirectory(File srcDir,File destDir) 复…

你的职业规划就是面向贫穷的规划

如果你觉得作者的文章还有点用,请记得点赞 + 关注 说一个扎心的事实,就是我们绝大多数人的职业规划基本上都是错误的,都是面向贫穷的规划。 因为绝大多数人的职业规划都是打工人的职业规划,这种规划除了很少部分人最终能成为企业高管,实现层级跃迁外,绝大多数人在大多数…

递归解析 LXML 树并避免重复进入某个节点

1、问题背景 我们在使用 LXML 库解析 MathML 表达式时,可能会遇到这样一个问题:在递归解析过程中,我们可能会重复进入同一个节点,导致解析结果不正确。例如,我们希望将以下 MathML 表达式解析为 Python 表达式&#x…

DJ-122A电压继电器 柜内安装 电磁式继电器 约瑟JOSEF

系列型号: DJ-100A/Q系列电压继电器 DJ-111A/Q电压继电器; DJ-112A/Q电压继电器; DJ-121A/Q电压继电器; DJ-122A/Q电压继电器; DJ-131A/Q电压继电器; DJ-132A/Q电压继电器; DJ-131A/Q160CN电压继电器; DJ-131A/Q160C电压继电器; ​ 概述 DJ-100A/Q系列电…

linux安装dgl

1.DGL官网、选择与自己cuda、python版本匹配的dgl的whl文件CUDA11.8、python10并下载 2.用pip install运行 pip install /home/u2023170749/download/dgl-2.2.0cu118-cp310-cp310-manylinux1_x86_64.whl

RocketMQ在Centos7系统上单机部署

最近因为一些信创问题,要将RabbitMQ替换为RocketMQ,因此在此分享一些RocketMQ在Centos7系统上单机部署相关过程。 优缺点 RocketMQ的优点: 性能优越:RocketMQ在处理大量消息时,性能优于RabbitMQ。当面临每秒数万到数…

【云岚到家】-day04-2-索引同步-搜索接口

【云岚到家】-day04-2-索引同步-搜索接口 1 索引同步1.1 编写同步程序1.1.1 创建索引结构1.1.2 编写同步程序1.1.2.1 添加依赖1.1.2.2 配置连接ES1.1.2.3 编写同步程序 1.1.3 测试1.1.4 小结1.1.4.1 如何保证CanalMQ同步消息的顺序性?1.1.4.2 如何保证只有一个消费者…

抖店一件代发设置自动发货

工具:逸淘 山东逸淘软件-www.1tsoft.com-一键下单! step1 下载插件 下载对应浏览器的插件 step2 插件安装 谷歌浏览器--右上角...--设置--扩展程序 把下载的插件从文件夹拖过来 备注:显示 错误 不影响使用 在浏览器网址右边--把插件固定…

香港优才自测140分,带36万+申请香港优才身份被拒了

最近又有一个朋友跟我诉说,一家人申请优才,带几十万yi民香港,还被拒了,真的好气! 费心费力等一年以上才收到拒批通知了,被拒的朋友有因为资料准备不足的,有因为错误自测分数给入境处过高期望的&…

【数据结构初阶】--- 栈和队列

栈 栈的定义 栈:只允许在一端进行插入或删除的操作 事实上,线性表和链表都可以实现栈,但栈的特点更符合用顺序表实现 顺序表的队尾相当于栈顶,对栈放入数据,相当于顺序表的下标arr[index] x,而栈弹出数…

老爷机带不动影视后期?云桌面了解一下

从黑白到彩色,从默片到有声,从2D到3D,影视工业经过百余年的演变,每一步技术的提升都试图让影视艺术更接近“真实”。电影特效技术的诞生,更是为影视作品的真实感实现了一次巨大的飞跃。 但有一部分影视人,…

毕业年薪30W起!25届最近5年浙江大学自动化考研院校分析

浙江大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目…

流程与IT双驱动:锐捷网络如何构建持续领先的服务竞争力?

AI大模型及相关应用进入“竞赛时代”,算力作为关键要素备受关注,由于算力行业对网络设备和性能有较大需求,其发展也在推动ICT解决方案提供商加速升级,提升服务响应速度和服务质量。 锐捷网络是行业领先的ICT基础设施及行业解决方…

黄河流域web

1、UNSER的 <?php highlight_file(__FILE__); class Wel {public $fast;public $star;public function __construct(){$this->fast "free_toto";echo "what?";}public function __destruct(){$content $this->star;printf ($content);}pu…

Prometheus写入influxDB:中间件remote_storage_adapter

Prometheus写入influxDB&#xff1a;中间件remote_storage_adapter prometheus默认采用的是本地磁盘做数据存储&#xff0c;本地存储的优势就是运维简单但是缺点就是无法海量的metrics持久化和数据存在丢失的风险,数据写入可能造成wal文件损坏导致采集数据无法再写入的问题。 …

5.4.Python 装饰器与语法糖

1. 装饰器 1.1 装饰器简介 装饰器的作用: 对函数进行装饰, 添加新的功能. 装饰器的原则: 开发封闭原则, 对扩展开放, 对修改封闭. 封闭: 已现实的功能代码块不应该被修改. 开放: 对现有功能的拓展开放. 在不改变被装饰对象内部代码以及调用方式的基础上为函数添加新的功能.1.…

Java课程设计:基于swing的学生信息管理系统

文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 这款Java swing实现的学生信息管理系统和jsp版本的功能很相似&#xff0c;简单的实现了班级信息的增删改查&#xff0c;学生信息的增删改查&#xff0c;数据库采用的是mysql&#xff0c;jdk版本不限&…

fuel无人机自主探索代码解读3——fast_exploration_fsm.cpp【状态机】

一、概述 fast_exploration_fsm.cpp订阅实时定位和目标点信息&#xff0c;每隔0.01s执行一次状态机&#xff0c;进行状态切换&#xff1b;每隔0.05s执行一次碰撞检测&#xff0c;按需进行重新规划&#xff1b;每0.5s执行一次边界回调定时器&#xff0c;对于处于WAIT_TRIGGER和…