2013-07-25 33 views
14

テキストファイルから特定の行番号のデータを抽出する最も効率的な方法は何ですか?たとえば、スキャナを使用してファイルを解析する場合、テキストファイルの行の総数に一致する長さの配列を最初に作成する必要がありますか?Javaのテキストファイルから特定の行を読み取る

テキストファイルに30行あり、3行、8行、12行だけで作業したい場合は、特にそれらの行だけを読む方法がありますか?ここ

+7

あなたは、おそらくカウンターを使用して、ループの各ラインの長さの均一性がわからない場合は! – NINCOMPOOP

+0

http://stackoverflow.com/questions/2312756/in-java-how-to-read-from-a-file-a-specific-line-given-the-line-number –

+1

驚くばかりです。みんなありがとう。私はカウンタ変数を使用していると思います。意味をなさない – Jon

答えて

7

は、あなたがそれを行う方法である。ここで

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();    
     } 
    } 
} 
} 
+1

例外がそれらを開いていないことを保証するためにあなたは 'finally'ブロックでストリームを閉じるべきです – MadProgrammer

+0

+1それを私に打つため – MaVRoSCy

+0

@MadProgrammer true、それを修正しました。ありがとうございました –

4

は、あなたが何ができるかです。 (それはあなたのプログラムの一部だけではなく、正確にあなたのプログラムがある)

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(); 
3

は、最後の質問に関しては、この

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(); 
     } 
    } 
1

をお試しください:このanswerによると、Javaの8から特定の行を抽出することができますファイル。その答えに例が示されています。

関連する問題