web-dev-qa-db-ja.com

Javaのテキストファイルから特定の行を読み取る

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

テキストファイルに30行あり、3行目、8行目、12行目だけを操作したい場合、それらの行だけを読み取る方法はありますか?

13
Jon

これがあなたのやり方です:

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

これがあなたができることです。 (これはプログラムの一部にすぎず、厳密にはプログラムではありません)

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();  
4
Mayank Tiwari

これを試して

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

最後の質問について:これによると answer 、Java 8を使用すると、ファイルから特定の行を抽出できます。その回答の例が提供されています。

1
João Matos

ここでは、行番号に従ってファイルを読み取るためのソリューションを見つけることができます。このサイトは最高です。すべてのプログラミング言語でこのコードが含まれています。そして、私はあなたにJavaコードを与えました。

https://www.rosettacode.org/wiki/Read_a_specific_line_from_a_file#Java

0
user8724871