Java-IO流实验攻略
实验目的
通过本实验,学生应该了解和掌握基本的Java IO流的使用方法,包括文件输入/输出流、字符输入/输出流、缓冲输入/输出流和对象输入/输出流等,同时也能够学会如何合理地使用IO流来处理文件读写操作。
实验环境
- Java 8及以上版本
- Eclipse等Java IDE软件
实验步骤
1. 创建文件
首先需要创建一个用于测试的文件,可以使用Eclipse等Java IDE软件在项目的根目录下创建一个名为test.txt
的文件,并在里面随意写入一些文本信息。
2. 文件输入/输出流
使用文件输入/输出流可以将一个文件的二进制数据读到Java程序中,并将数据从Java程序输出到文件中。以下是一个使用文件字节输入/输出流的示例,可以在Java程序中实现文件的读/写操作:
import java.io.*;
public class FileIODemo {
public static void main(String[] args) throws Exception {
// 输入流,将文件读取到程序中
FileInputStream fileInput = new FileInputStream("test.txt");
// 输出流,将程序中的文本信息输出到文件中
FileOutputStream fileOutput = new FileOutputStream("output.txt");
// 循环输出文件中的每个字节
int c;
while((c = fileInput.read()) != -1) {
// 对每个字节进行处理
//...
fileOutput.write(c);
}
// 关闭流
fileInput.close();
fileOutput.close();
}
}
3. 字符输入/输出流
使用字符输入/输出流可以读取文本格式的文件,在 Java 语言中有 Reader
和 Writer
两个抽象类来分别提供了字符流的输入和输出方法。以下是一个使用字符输入/输出流的示例,可以在Java程序中实现文件的读/写操作:
import java.io.*;
public class CharIODemo {
public static void main(String[] args) throws Exception {
// 输入流,将文件读取到程序中
FileReader fileReader = new FileReader("test.txt");
// 输出流,将程序中的文本信息输出到文件中
FileWriter fileWriter = new FileWriter("output.txt");
// 循环输出文件中的每个字符
int c;
while((c = fileReader.read()) != -1) {
// 对每个字符进行处理
//...
fileWriter.write(c);
}
// 关闭流
fileReader.close();
fileWriter.close();
}
}
4. 缓冲输入/输出流
缓冲输入/输出流使用了内部缓存来减少读写次数,提高了IO操作效率,同时还支持了一些高级输入/输出操作。以下是一个使用缓冲输入/输出流的示例:
import java.io.*;
public class BufferedIODemo {
public static void main(String[] args) throws Exception {
// 输入流,将文件读取到程序中
FileReader fileReader = new FileReader("test.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
// 输出流,将程序中的文本信息输出到文件中
FileWriter fileWriter = new FileWriter("output.txt");
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
// 循环输出文件中的每个字符
String line;
while ((line = bufferedReader.readLine()) != null) {
// 对每个字符进行处理
// ...
bufferedWriter.write(line);
bufferedWriter.newLine(); // 换行
}
// 关闭流
bufferedReader.close();
fileReader.close();
bufferedWriter.close();
fileWriter.close();
}
}
5. 对象输入/输出流
对象输入/输出流可以将Java对象序列化为二进制流并写入文件,也可以从二进制流中读入Java对象。以下是一个使用对象输入/输出流的示例:
import java.io.*;
public class ObjectIODemo {
public static void main(String[] args) throws Exception {
// 写入对象到文件中
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("object.dat"));
objectOutputStream.writeObject(new Person("张三", "男", "1980-01-01", "123456"));
objectOutputStream.writeObject(new Person("李四", "女", "1985-02-01", "654321"));
objectOutputStream.close();
// 从文件中读取对象
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("object.dat"));
try {
Person person1 = (Person) objectInputStream.readObject();
System.out.println(person1);
Person person2 = (Person) objectInputStream.readObject();
System.out.println(person2);
} catch (ClassNotFoundException e) {
//...
}
objectInputStream.close();
}
static class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String gender;
private String birth;
private transient String idNum; // 忽略被序列化的字段
public Person(String name, String gender, String birth, String idNum) {
this.name = name;
this.gender = gender;
this.birth = birth;
this.idNum = idNum;
}
public String toString() {
return "name:" + name + ", gender:" + gender + ", birth:" + birth + ", idNum:" + idNum;
}
}
}
实验总结
通过本次实验,我们学习了Java IO流的基本用法,掌握了常用的文件输入/输出流、字符输入/输出流、缓冲输入/输出流和对象输入/输出流等,以及对应的Java类与方法,能够熟练地使用这些方法进行文件读写操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java-IO流实验 - Python技术站