10 java
我对有点糊涂FileWriter和FileOutputStream.当我看到FileWriter的源代码时,只有4个构造函数,每个构造函数都在调用FileOutputStream构造函数.
public FileWriter(String fileName) throws IOException {
super(new FileOutputStream(fileName));
}
public FileWriter(String fileName, boolean append) throws IOException {
super(new FileOutputStream(fileName, append));
}
public FileWriter(File file) throws IOException {
super(new FileOutputStream(file));
}
public FileWriter(File file, boolean append) throws IOException {
super(new FileOutputStream(file, append));
}
public FileWriter(FileDescriptor fd) {
super(new FileOutputStream(fd));
}
Run Code Online (Sandbox Code Playgroud)
它们之间的区别搜索后,我发现这里提到.
FileOutputStream用于写入原始字节流,例如图像数据.要编写字符流,请考虑使用FileWriter.
怎么FileWriter能有所作为?即使它仍然FileOutputStream没有任何改变地调用构造函数.
Jon*_*eet 16
FileWriter是一个Writer.这是关于编写文本 - 它恰好是将其写入文件.它通过保存对a的引用来实现FileOutputStream,该引用在FileWriter构造函数中创建并传递给超类构造函数.
FileOutputStream是一个OutputStream.这是关于编写二进制数据.如果你想给它写文本,你需要把这些文本转换成二进制数据 - 而这正是FileWriter它的作用.我个人更喜欢使用FileOutputStream在包裹OutputStreamWriter 由我,让我来指定字符编码(如FileWriter总是使用平台默认的编码,烦人).
基本上,想想FileWriter是一种让你写作的简单方法:
Writer writer = new FileWriter("test.txt");
Run Code Online (Sandbox Code Playgroud)
代替
Writer writer = new OutputStreamWriter(new FileOutputStream("test.txt"));
Run Code Online (Sandbox Code Playgroud)
除了我通常建议使用OutputStreamWriter接受a 的构造函数的重载Charset.
FileOutputStream是编写原始类型的数据,例如int,而FileWriter编写面向字符的数据。
FileOutputStream没有附带处理字符串的方法。如果要使用FileOutputStream将字符串写入文件,则必须执行以下操作:
FileOutputStream fos=new FileOutputStream();
String str="Hello";
byte b[]=str.getBytes();
fos.write(b);
fos.close();
Run Code Online (Sandbox Code Playgroud)
在Filewriter字符串和字节数组之间没有转换。你可以简单地使用:
FileWriter fr=new FileWriter("C:\\");
fr.write("Hello");
fr.close();
Run Code Online (Sandbox Code Playgroud)
如果需要,不要忘记抛出任何异常。
| 归档时间: |
|
| 查看次数: |
10240 次 |
| 最近记录: |