繁体   English   中英

FileInputStream和FileOutputStream逐行

[英]FileInputStream and FileOutputStream line by line

FileInputStream读取文件的所有字节,FileOutputStream将allbytes写入文件

如果我想读取文件的所有字节但逐行读取,我会使用哪个类

以便

如果fileA包含两行

line1 line2

然后单独读取line1和line2的字节

FileOutputStream也是如此

弗雷德里克是正确的约BufferedReader ,但我不同意PrintWriter -我有问题PrintWriter是,它燕子例外。

值得理解的是,为什么FileInputStreamFileOutputStream没有任何与行相关的方法: *Stream类是关于二进制数据流的。 就二进制数据而言,没有“线”这样的东西。 *Reader*Writer类是关于文本的 ,其中一行的概念更有意义......虽然一般Reader没有足够的智能来读取一行(只是一个字符块)所以这就是BufferedReader进来。

InputStreamReaderOutputStreamWriter是适配器类,将字符编码应用于字节流以将其转换为字符,或将字符流转换为字节。

因此,您可能希望BufferedReader包装一个包含FileInputStreamInputStreamReader以进行读取 - 然后调用readLine() 对于写作,使用BufferedWriter包装的OutputStreamWriter包装一个FileOutputStream -然后调用write(String)newLine() (这将为您提供平台默认行分隔符 - 如果您需要特定的分隔符,只需将其写为字符串。)

还有FileReader类,它结合了FileInputStreamInputStreamReader (和FileWriter相同),但它们总是使用平台默认编码,这几乎不是你想要的。 这使得他们几乎无用的IMO。

我认为你要找的是BufferedReader和PrintWriter。

看看这个是第一个样本: http//www.java2s.com/Tutorial/Java/0180__File/CreateBufferedReaderfromInputStreamReader.htm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM