Java 为什么FileOutputStream在文件开头添加null和传输结束字符?
为什么要使用下面的代码Java 为什么FileOutputStream在文件开头添加null和传输结束字符?,java,file-io,Java,File Io,为什么要使用下面的代码 import java.io.DataOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { DataOutputStream out = new DataOutputStream( new F
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
DataOutputStream out = new DataOutputStream( new FileOutputStream("plik.txt"));
String test = new String("test");
out.writeUTF(test);
out.close();
}
}
在文件开头生成带有“null”和eot字符的文件,后跟“test”?我希望它只生成带有“test”的文件,而不包含其他内容。来自DataOutputStream.writeUTF()的Javadoc: 首先,将两个字节写入输出流,就像 writeShort方法,提供要跟随的字节数。此值为 实际写入的字节数,而不是 一串在长度之后,输出字符串的每个字符, 按顺序,对字符使用修改的UTF-8编码。 [……] 所以不是2个字符,而是2个字节 DataOutputStream的用途是: 数据输出流允许应用程序编写基本Java数据 以可移植的方式将类型转换为输出流。然后,应用程序可以使用数据输入流将数据读回 另外请注意,建议使用NIO2 API和自动资源管理。不要用绳子把绳子包起来。在写入文件系统时,还要为流使用缓冲区
try (DataOutputStream out = new DataOutputStream(new BufferedOutputStream(Files.newOutputStream(Paths.get("plik.txt")))){
String test = "test";
out.writeUTF(test);
}
如果您只想在UTF-8中向文件写入一些文本,请使用以下代码:
try (PrintWriter pw = new PrintWriter(Files.newBufferedWriter(Paths.get("plik.txt"), Charset.forName("UTF-8"))){
String test = "test";
pw.print(test);
}
“Automatic”应该是“Automatic”(我不允许编辑这篇文章,因为这将更改少于6个字符)@Bulwersator谢谢,修复了它!第二个版本不起作用-“BufferedWriter类型的writeUTF(String)方法未定义”@Bulwersator是的,我很快保存到。例如,你可以使用打印机,但它不能。DataOutputStream.writeUTF()没有。请参阅Javadoc。