Java实验指导(4)-io流.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Java I/O 流是Java语言中用于处理输入输出操作的核心机制。它允许程序与外部设备(如硬盘、网络、内存等)交换数据。本实验旨在帮助学生深入理解I/O流的概念,掌握各种流的分类和基本用法。 一、I/O流的分类 Java中的I/O流分为四大类:字节流(Byte Stream)、字符流(Character Stream)、缓冲流(Buffered Stream)和对象流(Object Stream)。字节流处理单个字节的数据,字符流处理Unicode字符,缓冲流提高了数据传输效率,而对象流则支持对象的序列化和反序列化。 1. 字节流:包括InputStream和OutputStream作为所有字节输入和输出流的基类。例如,FileInputStream和FileOutputStream分别用于文件的读写操作。 2. 字符流:Reader和Writer是所有字符输入和输出流的基类。FileReader和FileWriter用于文件的字符读写。 3. 缓冲流:BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter分别在字节流和字符流的基础上增加了缓冲功能,提高性能。 4. 对象流:ObjectInputStream和ObjectOutputStream用于序列化和反序列化对象,使得对象可以存储到文件或在网络间传输。 二、实验内容详解 1. 列出当前目录下所有文件:通过File类的listFiles()方法获取目录下的文件和子目录,然后遍历输出。 2. 文件复制:使用FileOutputStream将源文件内容写入新文件,这里通过字节流完成。先创建FileOutputStream实例,然后调用write()方法将数据写入新文件。 3. 添加行号:ReadExample.java程序通过FileReader和FileWriter读写文件,同时使用BufferedReader增加行号。首先读取源文件内容,然后将每行内容写入新文件时,先写入行号,再写入原文内容。 4. 学生成绩单分析:需要使用BufferedReader读取score.txt文件,根据给定的格式解析每行数据,计算总分,再用FileWriter写入结果到socreAnalysis.txt。利用正则表达式提取数字,计算总分后追加到原始数据后面。 三、具体实现 对于第四部分,可以这样实现: ```java public class Fenxi { public static void main(String[] args) { BufferedReader in = null; FileWriter out = null; try { in = new BufferedReader(new FileReader("score.txt")); out = new FileWriter("scoreAnalysis.txt"); String line; while ((line = in.readLine()) != null) { String[] parts = line.split(": "); String name = parts[0]; String scores = parts[1]; int totalScore = getTotalScore(scores); out.write(name + ": " + scores + ", 总分: " + totalScore + "\n"); System.out.println(name + ": " + scores + ", 总分: " + totalScore); } } catch (IOException e) { System.out.println("Error: " + e); } finally { try { if (in != null) { in.close(); } if (out != null) { out.close(); } } catch (IOException e) { System.out.println("Error closing streams: " + e); } } } public static int getTotalScore(String s) { String regex = "[^0123456789]"; String[] scoreParts = s.replaceAll(regex, "").split(" 分"); int total = 0; for (String scorePart : scoreParts) { total += Integer.parseInt(scorePart); } return total; } } ``` 这个程序首先读取score.txt文件,逐行处理。通过`getTotalScore()`方法计算每行的总分,然后将修改后的行写入到socreAnalysis.txt文件中。注意在处理完文件后,要关闭输入和输出流以释放资源。 通过这个实验,学生能够熟练掌握Java I/O流的基本用法,包括文件操作、字符流、字节流以及缓冲流的使用,同时也学习了如何处理文本数据和计算简单统计信息。
- 粉丝: 14
- 资源: 9万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助