Java中實現讀取文件指定行


  Java中實現讀取文件指定行

 

    讀取文件指定行要用到類LineNumberReader,它是跟蹤行號的緩沖字符輸入流,其基類是BufferedReader。。它有兩個構造方法:

    public LineNumberReader(Reader in)

    使用默認輸入緩沖區的大小創建新的行編號 reader,默認輸入緩沖區的大小為8096個字節。

    pulbic LineNumberReader(Reader in,int size)

    創建新的行編號 reader,將字符讀入給定大小的緩沖區。

    例如:

    FileInputReader in=new FileInputReader(“test.java”);

    LineNumberReader line=new LineNumberReader(in);

源代碼如下:

 

 

 

[java]  view plain  copy
 
  print ?
  1. import java.io.File;  
  2. import java.io.FileReader;  
  3. import java.io.IOException;  
  4. import java.io.LineNumberReader;  
  5. public class ReadSelectedLine{  
  6.     /** 
  7.      * 讀取文件指定行。 
  8.      */  
  9.     public static void main(String[] args) throws IOException {  
  10.         // 指定讀取的行號   
  11.         int lineNumber = 12;  
  12.         // 讀取文件   
  13.         File sourceFile = new   
  14.                           File("src/Chapter08/ReadSelectedLine.java");  
  15.         // 讀取指定的行   
  16.         readAppointedLineNumber(sourceFile, lineNumber);  
  17.         // 獲取文件的內容的總行數   
  18.         System.out.println(getTotalLines(sourceFile));  
  19.     }  
  20.     // 讀取文件指定行。   
  21.     static void readAppointedLineNumber(File sourceFile, int lineNumber)  
  22.             throws IOException {  
  23.         FileReader in = new FileReader(sourceFile);  
  24.         LineNumberReader reader = new LineNumberReader(in);  
  25.         String s = reader.readLine();  
  26.         if (lineNumber < 0 || lineNumber > getTotalLines(sourceFile)) {  
  27.             System.out.println("不在文件的行數范圍之內。");  
  28.         }  
  29.         {  
  30.             while (s != null) {  
  31. System.out.println("當前行號為:"  
  32.                             + reader.getLineNumber());  
  33.                     reader.setLineNumber(20);  
  34.                     System.out.println("更改后行號為:"  
  35.                             + reader.getLineNumber());  
  36.                     System.out.println(s);  
  37.                     System.exit(0);       
  38.                     s = reader.readLine();  
  39.             }  
  40.         }  
  41.         reader.close();  
  42.         in.close();  
  43.     }  
  44.     // 文件內容的總行數。   
  45.     static int getTotalLines(File file) throws IOException {  
  46.         FileReader in = new FileReader(file);  
  47.         LineNumberReader reader = new LineNumberReader(in);  
  48.         String s = reader.readLine();  
  49.         int lines = 0;  
  50.         while (s != null) {  
  51.             lines++;  
  52.             s = reader.readLine();  
  53.         }  
  54.         reader.close();  
  55.         in.close();  
  56.         return lines;  
  57.     }  
  58. }  

 


免責聲明!

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



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