如何解决java对象流输出到txt文件是乱码的问题
时间: 2024-02-13 16:07:34 浏览: 81
Java对象流输出到txt文件乱码的问题可能是因为txt文件是文本格式,而对象流是以二进制格式输出的,导致txt文件无法正确解码,从而出现乱码。
要解决这个问题,可以使用字符流将对象转换为文本格式,再输出到txt文件中。具体做法是:
1. 创建一个FileWriter对象,用于将文本写入文件。
2. 创建一个BufferedWriter对象,用于提高写入效率。
3. 创建一个PrintWriter对象,用于格式化输出。
4. 将对象转换为文本格式,并使用PrintWriter对象输出到txt文件中。
下面是一个示例代码:
```
import java.io.*;
public class ObjectToFile {
public static void main(String[] args) throws IOException {
// 将对象输出到文件
FileOutputStream fos = new FileOutputStream("object.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
MyObject obj = new MyObject();
pw.println(obj.toString());
pw.close();
bw.close();
osw.close();
fos.close();
// 从文件读取对象
FileInputStream fis = new FileInputStream("object.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
MyObject newObj = MyObject.fromString(line);
br.close();
isr.close();
fis.close();
}
}
class MyObject {
private int num;
private String str;
public MyObject() {
this.num = 123;
this.str = "Hello World";
}
public String toString() {
return num + "," + str;
}
public static MyObject fromString(String str) {
String[] parts = str.split(",");
MyObject obj = new MyObject();
obj.num = Integer.parseInt(parts[0]);
obj.str = parts[1];
return obj;
}
}
```
这个示例代码中,MyObject类实现了toString方法和fromString方法,用于将对象转换为文本格式和从文本格式中恢复对象。在主函数中,将MyObject对象输出到txt文件中,然后从txt文件中读取对象,再将其恢复为MyObject类型。注意,在写入和读取文件时,使用了UTF-8编码格式,这样能够避免中文乱码的问题。
阅读全文