方法:創建兩個非public類,一個輸出本行內容及字符數,另一個確定文件內容的總行數。
代碼如下:
import java.io.*; import java.util.Scanner; public class ReadFile2 { //輸出本行內容及字符數 static void readLineVarFile(String fileName, int lineNumber) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); //使用緩沖區的方法將數據讀入到緩沖區中 String line = reader.readLine(); //定義行數 if (lineNumber <= 0 || lineNumber > getTotalLines(fileName)) //確定輸入的行數是否有內容 { System.out.println("不在文件的行數范圍之內。"); } int num = 0; while (line != null) //當行數不為空時,輸出該行內容及字符數 { if (lineNumber == ++num) { System.out.println("第" + lineNumber + "行: " + line+" 字符數為:"+line.length()); } line = reader.readLine(); } reader.close(); } // 文件內容的總行數 static int getTotalLines(String fileName) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); //使用緩沖區的方法將數據讀入到緩沖區中 LineNumberReader reader = new LineNumberReader(br); String s = reader.readLine(); //定義行數 int lines = 0; while (s != null) //確定行數 { lines++; s = reader.readLine(); } reader.close(); br.close(); return lines; //返回行數 } public static void main(String[] args) throws IOException { String fileName = "D:/test.txt"; // 讀取文件 int totalNo = getTotalLines(fileName); // 獲取文件的內容的總行數 System.out.println("本文總共有:"+totalNo+ "行"); while(true) { Scanner sc=new Scanner(System.in); int lineNumber =sc.nextInt(); // 指定讀取的行號 readLineVarFile("D:/test.txt", lineNumber); //讀取指定行的內容 } } }