簡體   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