gpt4 book ai didi

java - 文件 I/O 在输出中产生乱码

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:56 34 4
gpt4 key购买 nike

我正在使用 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();

关于java - 文件 I/O 在输出中产生乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14304450/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com