2016-10-27 8 views
1

私は現在Javaを勉強中です。私は、テキストファイルを最も効率的に読む方法に興味があります。私はそれを行うためにStreamオブジェクト(このコンテキストでは「オブジェクト」ですか?)を使用することが可能であることを読んで、それに既にショットを与えました。私は、次のコードを使用して、テキスト文書からすべての行を印刷することができます:テキストファイルを読み込み、各行を処理する最もきれいな方法

私は各行を使って何かします。たとえば、私はテキスト文書にたくさんの名前を入れて、それぞれの名前に "Hello、NAME"という名前のJavaをプリントアウトさせたいと思います。それ、どうやったら出来るの?個別に行にアクセスするにはどうすればいいですか?配列を最初に配列に入れて反復処理する必要がありますか?

readFileStreamという名前のStreamオブジェクトを作成したとしますか?私は自分の用語が正しいことを確認したい。さらに、ストリームの後に追加する理由は何ですか?私は<>がリストに使われていることを知っていますが、この文脈では私は理解しません。

ありがとうございます。

+1

http://stackoverflow.com/a/13741943/5703530 私が間違っていない場合は、ファイルを読んでいる間はファイルを変更できません。次に、行を保存して後で変更する方法の例を示します。 そしてこの '<>'についてはジェネリックを見てください。https://docs.oracle.com/javase/tutorial/java/generics/types.html –

答えて

2

個別の行にアクセスするために簡単です:readFileStream.forEach(System.out::println);

など何かにそれを回す:

あなたはこの表現を言えば、必要
readFileStream.forEach(line -> { 
      System.out.println(line.toUpperCase()); 
     }); 

私の例では、各行を大文字にしています。ラインを個別に持っていれば、あらゆる種類の処理を行うことができます。

+0

ありがとう、私はあなたの答えに行った! – Inialk

1

これは、一度に1行を読み込みます

File file = new File("text.txt"); 

    try(BufferedReader br = new BufferedReader(new FileReader(file))){ 
     String line; 
     while((line = br.readLine())!=null){ 
      System.out.println(line); 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
+0

私は本当にStreamを使いたいと思っていました.D – Inialk

+0

FileReaderはInputStreamReaderを拡張しています。技術的にはこれがストリームになる –

0
Files.lines(Paths.get(filePath)) 
    .filter(line -> line.startsWith(“J“)) 
    .forEach(line -> System.out.printf(“Hello, %s%n“, line)); 

あなたはほとんどそこにいました。ストリームで読む。 ストリームは1回限りの反復処理なので、変数は不必要です。 フィルタリングを追加しましたが、ソートなどもできます。

0

Apacheが提供する良いライブラリがあります。commons-ioです。最新バージョンは2.5です。ここで

はそれのためにMavenの依存関係です:

<dependency> 
    <groupId>commons-io</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>2.5</version> 
</dependency> 

このライブラリは、ファイルを読むために非常に良い方法があります。

は、この方法を確認します。

List<String> listOfLines = FileUtils.readLines(file, encoding); 

それは文字列のリストにファイルを読み込みます。

関連する問題