Java一行一行的讀文件和簡單的寫文件


在java的實驗作業中,有一個是從我們的txt文件中讀取矩陣。其中數與數之間是用\t隔開。行與行之間是用\n跳過。本人java學藝不精,所以我只有自行詢問度娘。得知了一個可以從文件中一行一行的讀取內容的函數readLn()。並且在讀取過程中可以直接把每行的換行符去掉。可謂非常方便(其他盆友如果需要換行符自己加上去即可)

首先我們了解下這個類

模塊 java.base
包 java.io

Class BufferedReader

  • java.lang.Object繼承
    • java.io.Reader中
      • java.io.BufferedReader中
  • 所有已實現的接口:
    Closeable AutoCloseable Readable
    直接已知子類:
    LineNumberReader
公共類BufferedReader 擴展了Reader
從字符輸入流中讀取文本,緩沖字符,以便有效地讀取字符,數組和行。

可以指定緩沖區大小,或者可以使用默認大小。對於大多數用途,默認值足夠大。

通常,由Reader構成的每個讀取請求都會導致相應的讀取請求由基礎字符或字節流構成。因此,建議將BufferedReader包裝在任何read()操作可能代價高昂的Reader上,例如FileReaders和InputStreamReaders。例如,

 BufferedReader in = new BufferedReader(new FileReader(“foo.in”));//"foo.in"直接換上我們的要讀取的文件的路徑(相對絕對都可以)。我們就可以用這個方法了。
注意 new FileReader()方法個人覺得相當於c語言的獲得文件指針

將緩沖指定文件的輸入。如果沒有緩沖,read()或readLine()的每次調用都可能導致從文件中讀取字節,轉換為字符,然后返回,這可能是非常低效的。

   

  在接着我們使用in.readLine()就可以了。它會一次讀取被讀取文件的每一行,並且返回這一行形成的String line = in.readLine();//讀取文件中矩陣的一行

  接着我們就可以使用它們來進行我們的操作

使用完成后記得使用in.close()來關閉避免浪費資源

 寫
由於題目比較簡單我也沒有深究。只使用到了write()方法
那么讓我們看看這個類
模塊 java.base
包 java.io

類FileWriter

  • java.lang.Object繼承
    • java.io.Writer中
      • java.io.OutputStreamWriter中
        • java.io.FileWriter
  • 所有已實現的接口:
    Closeable Flushable Appendable AutoCloseable
  公共類FileWriter   擴展了OutputStreamWriter
  用於編寫字符文件的便捷類。此類的構造函數假定默認字符編碼和默認字節緩沖區大小是可接受的。要自己指定這些值,請在FileOutputStream上構造OutputStreamWriter。

  文件是否可用或是否可以創建取決於底層平台。特別是某些平台允許一次只打開一個文件FileWriter(或其他文件寫入對象)來打開文件。在這種情況下,如果涉及的文件已經打開,則此類中的構造函數將失敗。

  FileWriter用於編寫字符流。要編寫原始字節流,請考慮使用a FileOutputStream

我使用的是第三個構造方法。在沒有參數或者參數為false的情況下,他會清空這個文件。在參數為true的情況下,他會在原有數據的基礎上添加內容。

  fw = new FileWriter("src/P1/txt/6.txt",true);

public void write​(char[] cbuf,
                  int off,
                  int len)
           throws IOException
Writes a portion of an array of characters.
Specified by:
write in class  Writer
Parameters:
cbuf - Buffer of characters
off - Offset from which to start writing characters
len - Number of characters to write
Throws:
IndexOutOfBoundsException - If  off is negative, or  len is negative, or  off + len is negative or greater than the length of the given array
IOException - If an I/O error occurs
 若果你直接想寫入其中我們就直接加入字符串就可以了
fw.write(magic[i][j] + "\t");
關於off表示偏移量
len表示你要截取的長度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM