FileReader rd=new FileReader("new.mp4");
FileWriter wr=new FileWriter("output.mp4");
int ch;
while((ch=rd.read())!=-1)
wr.write(ch);
wr.flush();
wr.close();
Run Code Online (Sandbox Code Playgroud)
当我使用FileReader和FileWriter读取和写入mp4文件时,output.mp4文件无法很好地呈现.但是当我使用它时FileInputStream,FileOutputStream它运作良好.
那么我可以得出结论FileReader,FileWriter仅用于阅读和撰写文本吗?
Boz*_*zho 51
是的,你的结论是正确的子类Reader,并Writer为读/写文本内容.InputStream/ OutputStream是二进制内容.如果你看看文档:
Reader- 用于读取字符流的抽象类
InputStream- 抽象类是表示输入字节流的所有类的超类.
Jon*_*eet 31
FileReader(实际上任何扩展读者的东西)确实是用于文本的.来自以下文件Reader:
用于读取字符流的抽象类.
(强调我的.)看看API,你会发现它与文本有关 - char而不是byte到处都是.
InputStream并OutputStream用于二进制数据,例如mp4文件.
我个人会FileReader完全避免,因为它总是使用系统默认字符编码.相反,使用InputStreamReader围绕着FileInputStream......但只有当你要处理的文本.
顺便说一句,这是一种从输入到输出的非常低效的复制方式......使用缓冲区的重载read和write读取缓冲区 - a byte[]或a char[].否则,您将为文件中的每个字节/字符调用读写.
您还应该在finally块中关闭IO流,这样即使在处理它们时抛出异常,它们也会关闭.
小智 6
FileInputStream用于读取原始字节数据流,如原始图像.FileReaders另一方面,用于读取字符流
FileInputStream和之间的区别FileReader是,
FileInputStream逐字节FileReader读取文件并逐字符地读取文件.
所以,当你试图读取包含字符文件"?"中,FileInputStream将给出结果作为196 140,因为ASCII价值?是268.
In FileReader将给出结果,268即ASCIIchar 的值?.
| 归档时间: |
|
| 查看次数: |
44962 次 |
| 最近记录: |