![](/img/trans.png)
[英]FileInputStream, FileOutputStream - check file for specific value/line/string
[英]FileInputStream and FileOutputStream line by line
FileInputStream读取文件的所有字节,FileOutputStream将allbytes写入文件
如果我想读取文件的所有字节但逐行读取,我会使用哪个类
以便
如果fileA包含两行
line1 line2
然后单独读取line1和line2的字节
FileOutputStream也是如此
弗雷德里克是正确的约BufferedReader
,但我不同意PrintWriter
-我有问题PrintWriter
是,它燕子例外。
值得理解的是,为什么FileInputStream
和FileOutputStream
没有任何与行相关的方法: *Stream
类是关于二进制数据流的。 就二进制数据而言,没有“线”这样的东西。 *Reader
和*Writer
类是关于文本的 ,其中一行的概念更有意义......虽然一般Reader
没有足够的智能来读取一行(只是一个字符块)所以这就是BufferedReader
进来。
InputStreamReader
和OutputStreamWriter
是适配器类,将字符编码应用于字节流以将其转换为字符,或将字符流转换为字节。
因此,您可能希望BufferedReader
包装一个包含FileInputStream
的InputStreamReader
以进行读取 - 然后调用readLine()
。 对于写作,使用BufferedWriter
包装的OutputStreamWriter
包装一个FileOutputStream
-然后调用write(String)
和newLine()
(这将为您提供平台默认行分隔符 - 如果您需要特定的分隔符,只需将其写为字符串。)
还有FileReader
类,它结合了FileInputStream
和InputStreamReader
(和FileWriter
相同),但它们总是使用平台默认编码,这几乎不是你想要的。 这使得他们几乎无用的IMO。
我认为你要找的是BufferedReader和PrintWriter。
看看这个是第一个样本: http : //www.java2s.com/Tutorial/Java/0180__File/CreateBufferedReaderfromInputStreamReader.htm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.