的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