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