FileInputStream读取文件的所有字节,而FileOutputStream将所有字节写入文件
如果我想逐行读取文件的所有字节,应该使用哪个类?
这样,如果fileA包含两行
line1 line2
那么将分别读取line1和line2的字节
对于FileOutputStream也是同样的情况
FileInputStream读取文件的所有字节,而FileOutputStream将所有字节写入文件
如果我想逐行读取文件的所有字节,应该使用哪个类?
这样,如果fileA包含两行
line1 line2
那么将分别读取line1和line2的字节
对于FileOutputStream也是同样的情况
BufferedReader
方面是正确的,但我不同意他关于PrintWriter
的看法,我的问题是PrintWriter
会吞噬异常。FileInputStream
和FileOutputStream
没有与行相关的方法: *Stream
类是关于二进制数据流的。二进制数据中没有“行”这个概念。而*Reader
和 *Writer
类是处理文本的,其中“行”的概念更有意义……尽管一个通用的Reader
不能够聪明地读取一行数据(只能读取一个字符块),这就是BufferedReader
的用处。
InputStreamReader
和OutputStreamWriter
是适配器类,它们可以将字节流应用特定字符编码以将其转换为字符流,或将字符流转换为字节流。BufferedReader
包装InputStreamReader
包装FileInputStream
来进行读取——然后调用readLine()
。对于写入操作,请使用BufferedWriter
包装OutputStreamWriter
包装FileOutputStream
——然后调用write(String)
和newLine()
。(这将给您平台默认的换行符——如果需要特定的换行符,请将其作为字符串写入。)此外还有FileReader
类,它有点像将FileInputStream
和InputStreamReader
结合起来(FileWriter
也是相同的)。但这些类始终使用平台默认编码,这几乎永远不是你想要的。我认为这使它们几乎没有用处。
我认为你需要的是BufferedReader和PrintWriter。
可以参考以下链接了解如何使用BufferedReader:http://www.java2s.com/Tutorial/Java/0180__File/CreateBufferedReaderfromInputStreamReader.htm