的FileInputStream读取文件的所有字节和FileOutputStream中写入allbytes到一个文件的FileInputStream和FileOutputStream中逐行
哪个班做,如果我想按行读入一个文件,但行的所有字节我用
使得
如果的fileA包含两行
LINE1 LINE2
然后字节LINE1和LINE2读seperately
同样适用于FileOutputStream中
的FileInputStream读取文件的所有字节和FileOutputStream中写入allbytes到一个文件的FileInputStream和FileOutputStream中逐行
哪个班做,如果我想按行读入一个文件,但行的所有字节我用
使得
如果的fileA包含两行
LINE1 LINE2
然后字节LINE1和LINE2读seperately
同样适用于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
不等价),但这些总是使用平台的默认编码,这几乎是从来没有你想要的。这使得他们几乎没有任何IMO。
我想你正在寻找的是一个BufferedReader和PrintWriter的。
退房这个第一个样本:http://www.java2s.com/Tutorial/Java/0180__File/CreateBufferedReaderfromInputStreamReader.htm
“行”意味着文本数据。 “输出流”意味着二进制数据。 这是什么? – 2009-11-21 17:29:58