eclipse文件流
时间: 2024-12-26 12:26:39 浏览: 5
### Eclipse 文件流操作示例
在 Java 开发环境中,文件输入输出(I/O)是一个常见的需求。通过使用 `java.io` 包中的类可以实现文件读写功能。以下是几个关于如何在 Eclipse 中执行基本文件流操作的例子。
#### 1. 使用 FileInputStream 和 FileOutputStream 进行二进制数据传输
当需要复制一个文件的内容到另一个新文件时,可以通过如下方式:
```java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopyExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("source.txt");
FileOutputStream fos = new FileOutputStream("destination.txt")) {
int content;
while ((content = fis.read()) != -1) {
fos.write(content);
}
System.out.println("The file was successfully copied.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这段代码展示了怎样打开源文件并逐字节将其内容写入目标文件中[^1]。
#### 2. 利用 BufferedReader 和 BufferedWriter 实现文本文件处理
对于纯文本文件的操作,则更推荐采用缓冲区的方式来进行高效读取与写出:
```java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TextFileReadWrite {
public static void main(String[] args) throws IOException {
String line;
// Read from a text file
try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) {
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
// Write to a text file
try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt", true))) {
bw.write("This is an example of writing into the output file.\n");
}
}
}
```
此部分说明了利用 `BufferedReader` 可以方便地按行读取大尺寸文本文件;而 `BufferedWriter` 支持追加模式向现有文件添加新的记录。
#### 3. 序列化对象至文件及反序列化恢复对象状态
有时还需要保存整个对象的状态以便日后加载回来,这时就需要借助于 ObjectInputStream/ObjectOutputStream 来完成这项工作:
```java
import java.io.*;
class Person implements Serializable{
private static final long serialVersionUID = 1L;
String name;
transient int age; // 'transient' keyword prevents this field being serialized
Person(String n, int a){
name=n;
age=a;
}
}
public class SerializeDemo {
public static void main(String []args){
Person p=new Person("John Doe", 30);
// Serialization process
try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"));){
oos.writeObject(p);
System.out.printf("Serialized person object saved as %s\n","person.ser");
}catch(IOException ex){
ex.printStackTrace();
}
// Deserialization process
try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"));){
Person restoredPerson=(Person)ois.readObject();
System.out.println("Deserialized person's Name: "+restoredPerson.name+", Age: Not Available due to Transient Keyword.");
}catch(ClassNotFoundException | IOException ex){
ex.printStackTrace();
}
}
}
```
上述例子解释了如果想要持久存储复杂的数据结构比如自定义的对象实例应该如何做,并且注意到了某些字段不应该被序列化的场景下所采取的方法——即声明这些成员变量为 `transient` 类型。
阅读全文