Yok*_*hen 4 java ascii outputstream file
我正在编写一个程序,将数据输出到.txt文件,可以由一个人使用NotePad等程序读取.也许不一定是ASCII,但用户可以理解的东西.
我使用哪一种?
我有这个赋值,要求我专门使用一个OutputStream子类,所以Writer不是一个选项.
课程概述
ByteArrayOutputStream是要写入的字节到内存中byte[].FileOutputStream是写字节到File.FilterOutputStream是用于预先处理数据的更具体输出流的通用超类,例如加密/解密,计算校验和,字符编码,压缩(压缩)等.它本身没什么特别的.ObjectOutputStream完整的Java类型和对象以序列化形式写入字节流.它基本上允许将复杂的Java对象转换为原始字节,反之亦然.OutputStream只是这些流的常见抽象类.无论如何你无法构建它.但是你可以宣布反对它.PipedOutputStream被intented要能写另一个InputStream在管道,使对方能够从阅读它们InputStream.你想把数据写成a File,所以FileOutputStream绰绰有余.
OutputStream output = new FileOutputStream("/foo.txt");
try {
output.write(text.getBytes());
} finally {
output.close();
}
Run Code Online (Sandbox Code Playgroud)
请注意,String#getBytes()使用平台默认编码将字符转换为字节.如果您使用的"特殊字符"至少不包含ASCII,则应始终使用明确指定字符集String#getBytes(charset).例如:
output.write(text.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
然而,与具体问题无关,通常的做法是使用a Writer来编写字符数据.
如果您不关心字符编码,请使用FileWriter:
Writer writer = new FileWriter("/foo.txt");
try {
writer.write(text);
} finally {
writer.close();
}
Run Code Online (Sandbox Code Playgroud)
它将使用平台默认字符编码,通常也支持ASCII字符.
如果您关心字符编码,请使用OutputStreamWriter:
Writer writer = new OutputStreamWriter(new FileOutputStream("/foo.txt"), "UTF-8");
// ...
Run Code Online (Sandbox Code Playgroud)
它允许您在获取时将charset指定为第二个参数OutputStream.