java中從末行逐行向上讀取文件 – JAVA編程語言程序開發技術文章

public static void main(String[] args) {
         try {
             // 下面是先寫文件, 向文件尾追加, 若文件不存在則自動創建文件
             FileWriter fw = new FileWriter("C:/test.txt", true); // 用FileWriter打開文件
             PrintWriter pw = new PrintWriter(fw); // 用寫指針加載文件
             String[] str = { "" }; // 要寫入的字符串
             for (String index : str) {
                 pw.println(index); // 每次都向文件尾追加
             }
             pw.close(); // 關閉
             fw.close(); // 關閉
 
 // 下面定位文件末行, 一行一行向上讀取
             RandomAccessFile raf = new RandomAccessFile("C:/test.txt", "r"); // 該類可以定位文件,
 // 是java
 // IO類中唯一可以用來定位的
             long len = raf.length(); // 獲得文件的長度,以便定位末尾
             if (len <= 3) { // 判斷文件是否為空
                 System.out.println("the flie is NULL!");
                 return;
             }
             long pos = len – 1; // 定位文件尾
             while (pos > 0) { // 判斷文件是否到達頭
                 –pos; // 一個字符一個字符的向前移動指針
                 raf.seek(pos); // 定位文件指針所指的位置
                 if (raf.readByte() == '\n') { // 如果是換行符,就可以讀取該行瞭
                     System.out.println(raf.readLine());
                 }
             }
             raf.seek(pos); // 最後還需要讀取第一行
             System.out.println(raf.readLine());
             raf.close(); // 關閉
 
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
         System.exit(0);
         return;
     }

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *