從文本文件中提取特定行數的最有效方法是什麼?例如,如果我使用掃描儀來解析文件,我首先必須創建一個長度與文本文件中的行數相匹配的數組嗎?從Java文本文件中讀取特定行
如果一個文本文件有30行,我只想使用第3,8和12行,是否有專門的方法來只讀這些行?
從文本文件中提取特定行數的最有效方法是什麼?例如,如果我使用掃描儀來解析文件,我首先必須創建一個長度與文本文件中的行數相匹配的數組嗎?從Java文本文件中讀取特定行
如果一個文本文件有30行,我只想使用第3,8和12行,是否有專門的方法來只讀這些行?
這裏是你如何做到這一點:
import java.io.*;
public class Test {
public static void main(String [] args) {
// The name of the file to open.
String fileName = "temp.txt";
int counter = 0;
// This will reference one line at a time
String line = null;
FileReader fileReader = null;
try {
// FileReader reads text files in the default encoding.
fileReader =
new FileReader(fileName);
// Always wrap FileReader in BufferedReader.
BufferedReader bufferedReader =
new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
counter++;
if(counter == 3 || counter == 8 || counter == 12)
{
// do your code
}
}
}
catch(FileNotFoundException ex) {
System.out.println(
"Unable to open file '" +
fileName + "'");
}
catch(IOException ex) {
System.out.println(
"Error reading file '"
+ fileName + "'");
// Or we could just do this:
// ex.printStackTrace();
}
finally
{
if(fileReader != null){
// Always close files.
bufferedReader.close();
}
}
}
}
你應該在'finally'塊中關閉你的流,以確保一個例外不會讓他們打開 – MadProgrammer
+1只是爲了打我吧 – MaVRoSCy
@MadProgrammer是真的,解決了這個問題。謝謝 –
這裏是你可以做什麼。 (這是你的計劃中的一部分,不完全是你的程序)
int counter 0 =;
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
// process the line.
counter++;
switch(counter){
case 3:
\\ do your code for line no 3
break;
case 8:
\\ do your code for line no 8
break;
case 12:
\\ do your code for line no 12
break;
}
}
br.close();
試試這個
try
{
String sCurrentLine;
br = new BufferedReader(new FileReader("File_Path"));
int counter = 0;
while ((sCurrentLine = br.readLine()) != null)
{
counter++;
if (counter == 3 || counter == 8 || counter == 12)
{
System.out.println("" + br.read());
if (counter == 12)
break;
}
}
}
catch (IOException e)
{
System.out.println("Exception " + e);
}
finally
{
try
{
if (br != null)
{
br.close();
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
關於最後一個問題:按照這個answer,爪哇8能夠提取從一個特定的行文件。答案中提供了示例。
在這裏你可以找到解決方案來讀取文件根據行號。這個網站是最好的它在所有的編程語言中包含這個代碼。我已經給你了java代碼。
https://www.rosettacode.org/wiki/Read_a_specific_line_from_a_file#Java
如果你不能確定均勻性中的每一行的長度,然後循環使用計數器可能! – NINCOMPOOP
http://stackoverflow.com/questions/2312756/in-java-how-to-read-from-a-file-a-specific-line-given-the-line-number –
太棒了。謝謝大家。我想我會使用計數器變量。說得通。 – Jon