我正在使用 Java 学习文件 I/O。
以下是我来自两个不同 Java 文件的代码。一个是主类的“File”,另一个是“FileWrite”。
我能够实现字符串输入和输出。但输出文本文件一开始就有乱码,我不知道为什么。
[文件.Java]
package file;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class File {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("B:\\fileIn.txt")))
{
String stCurrent;
while ((stCurrent = br.readLine()) != null) {
System.out.println(stCurrent);
}
} catch (IOException e) {
e.printStackTrace();
}
FileWrite fW = new FileWrite();
fW.serializeAddress("Boston", "Canada");
}
}
[FileWrite.Java]
package file;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class FileWrite {
public void serializeAddress(String city, String country) {
try {
FileOutputStream fout = new FileOutputStream("B:\\address.txt");
ObjectOutputStream obOut = new ObjectOutputStream(fout);
obOut.writeUTF(city);
obOut.writeUTF(country);
obOut.close();
System.out.println("Output Done");
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
现在,关于“obOut.writeUTF(city); obOut.writeUTF(country);”我分离出两个字符串输入。有没有办法将它们合二为一?如 obOut.writeUTF(city, Country) 而不是两个。或者这只能通过将它们变成一个对象来实现?
[更新]又导入了几个,我尝试了
PrintStream ps = new PrintStream(new FileWriter("B:\\addressPS.txt"));
ps.println(city);
ps.println(country);
ps.close();
But with errors, any clue?
你已经在做正确的事情了,让他们分开。城市和国家是不同的领域。
一个非常常见的错误是没有区分二进制文件和文本文件/套接字流。你把两者混为一谈,这会导致困惑。我建议您只起诉文本 Writer/Reader 或二进制 Input/OuptutStream,除非您对自己在做什么有非常清楚的了解。
简而言之,如果您要编写文本使用什么
PrintStream ps = new PrintStream(new FileWriter(textFileName));
ps.println(city);
ps.println(country);
ps.close();
我是一名优秀的程序员,十分优秀!