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);
源代碼如下:
- import java.io.File;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.LineNumberReader;
- public class ReadSelectedLine{
- /**
- * 讀取文件指定行。
- */
- public static void main(String[] args) throws IOException {
- // 指定讀取的行號
- int lineNumber = 12;
- // 讀取文件
- File sourceFile = new
- File("src/Chapter08/ReadSelectedLine.java");
- // 讀取指定的行
- readAppointedLineNumber(sourceFile, lineNumber);
- // 獲取文件的內容的總行數
- System.out.println(getTotalLines(sourceFile));
- }
- // 讀取文件指定行。
- static void readAppointedLineNumber(File sourceFile, int lineNumber)
- throws IOException {
- FileReader in = new FileReader(sourceFile);
- LineNumberReader reader = new LineNumberReader(in);
- String s = reader.readLine();
- if (lineNumber < 0 || lineNumber > getTotalLines(sourceFile)) {
- System.out.println("不在文件的行數范圍之內。");
- }
- {
- while (s != null) {
- System.out.println("當前行號為:"
- + reader.getLineNumber());
- reader.setLineNumber(20);
- System.out.println("更改后行號為:"
- + reader.getLineNumber());
- System.out.println(s);
- System.exit(0);
- s = reader.readLine();
- }
- }
- reader.close();
- in.close();
- }
- // 文件內容的總行數。
- static int getTotalLines(File file) throws IOException {
- FileReader in = new FileReader(file);
- LineNumberReader reader = new LineNumberReader(in);
- String s = reader.readLine();
- int lines = 0;
- while (s != null) {
- lines++;
- s = reader.readLine();
- }
- reader.close();
- in.close();
- return lines;
- }
- }
