Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでファイルを読み取る方法

Javaには、ファイルを読み取るためのいくつかのメソッドが用意されています。これらの各方法は、さまざまな状況でさまざまな種類のファイルを読み取るのに適しています。長いファイルを読むのに適しているものもあれば、短いファイルを読むのに適しているものもあります。

このチュートリアルでは、次のJavaクラスを使用してファイルを読み取ります

  • BufferedReader
  • ファイル
  • スキャナー

チュートリアル全体を通して、srcに保存されているファイルを使用しています。 ファイルへのパスがsrc/file.txtであるディレクトリ 。

続行する前に、このファイルに数行のテキストを保存してください。

注:これらの実装を使用してコーディングのベストプラクティスに固執する場合は、エラーを適切に処理する必要があります。

BufferedReaderを使用したJavaでのテキストファイルの読み取り

BufferedReader クラスは文字入力ストリームを読み取ります。読み取りプロセスをより効率的にするために、デフォルトサイズが8KBのバッファに文字をバッファリングします。ファイルを1行ずつ読み取りたい場合は、BufferedReaderを使用することをお勧めします。

BufferedReader 大きなファイルを読み取るのに効率的です。

import java.io.*;

public class FileReaderWithBufferedReader {

    public static void main(String[] args) throws IOException{We
        String file = "src/file.txt";
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));

        String curLine;
        while ((curLine = bufferedReader.readLine()) != null){
            //process the line as required
            System.out.println(curLine);
        }
        bufferedReader.close();
    }
}

readline() ファイルの終わりに達すると、メソッドはnullを返します。

注:読み取りが終了したら、ファイルを閉じることを忘れないでください。

BufferedReaderを使用したJavaでのUTF-8エンコードファイルの読み取り

BufferedReaderを使用できます UTF-8でエンコードされたファイルを読み取るクラス。

今回は、InputStreamReaderを渡します BufferedReaderを作成するときのオブジェクト インスタンス。

import java.io.*;

public class EncodedFileReaderWithBufferedReader {

    public static void main(String[] args) throws IOException {
        String file = "src/fileUtf8.txt";
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));

        String curLine;
        while ((curLine = bufferedReader.readLine()) != null){
            //process the line as you require
            System.out.println(curLine);
        }
    }
}

Javaファイルクラスを使用したファイルの読み取り

JavaFiles JavaNIOのJava7で導入されたクラスは、ファイルを操作する静的メソッドで完全に構成されています。

Filesの使用 クラスでは、ファイルの全内容を配列に読み込むことができます。これにより、小さいファイルを読み取るのに適しています。

これらの両方のシナリオでFilesクラスを使用する方法を見てみましょう。

ファイルクラスを使用してJavaで小さなファイルを読み取る

readAllLines() Filesのメソッド classを使用すると、ファイルのコンテンツ全体を読み取ることができ、各行を文字列として配列に格納できます。

Pathを使用できます Files以降のファイルへのパスを取得するクラス クラスはPathを受け入れます ファイルのオブジェクト。

import java.io.IOException;
import java.nio.file.*;
import java.util.*;

public class SmallFileReaderWithFiles {

    public static void main(String[] args) throws IOException {
        String file = "src/file.txt";
        Path path = Paths.get(file);
        List<String> lines = Files.readAllLines(path);
    }
}

readAllBytes()を使用できます ファイルに保存されているデータを文字列配列ではなくバイト配列に取得します。

byte[] bytes = Files.readAllBytes(path);
ファイルクラスを使用してJavaで大きなファイルを読み取る

Filesで大きなファイルを読みたい場合 クラスでは、newBufferedReader()を使用できます BufferedReaderのインスタンスを取得するメソッド クラスを作成し、BufferedReaderを使用してファイルを1行ずつ読み取ります 。

import java.io.*;
import java.nio.file.*;

public class LargeFileReaderWithFiles {

    public static void main(String[] args) throws IOException {
        String file = "src/file.txt";
        Path path = Paths.get(file);
        BufferedReader bufferedReader = Files.newBufferedReader(path);

        String curLine;
        while ((curLine = bufferedReader.readLine()) != null){
            System.out.println(curLine);
        }
        bufferedReader.close();
    }
}

Files.lines()でファイルを読み取る

Java 8では、Filesクラスに新しいメソッドが導入され、ファイル全体がStreamに読み込まれました。 文字列の。

import java.io.IOException;
import java.nio.file.*;
import java.util.stream.Stream;

public class FileReaderWithFilesLines {

    public static void main(String[] args) throws IOException {
        String file = "src/file.txt";
        Path path = Paths.get(file);
        Stream<String> lines = Files.lines(path);

        lines.forEach(s -> System.out.println(s));
        lines.close();
    }
}
スキャナーを使用してJavaでテキストファイルを読み取る

Scanner クラスは、指定された区切り文字を使用してファイルの内容を部分に分割し、部分ごとに読み取ります。このアプローチは、区切り文字で区切られたコンテンツを読むのに最適です。

たとえば、Scanner classは、空白で区切られた整数のリストまたはコンマで区切られた文字列のリストを読み取るのに理想的です。

Scannerのデフォルトの区切り文字 クラスは空白です。ただし、区切り文字を別の文字または正規表現に設定できます。また、next()などのさまざまなnextメソッドもあります。 、nextInt()nextLine() 、およびnextByte() 、コンテンツをさまざまなタイプに変換します。

import java.io.IOException;
import java.util.Scanner;
import java.io.File;

public class FileReaderWithScanner {

    public static void main(String[] args) throws IOException{
        String file = "src/file.txt";
        Scanner scanner = new Scanner(new File(file));
        scanner.useDelimiter(" ");

        while(scanner.hasNext()){
            String next = scanner.next();
            System.out.println(next);
        }
        scanner.close();
    }
}

上記の例では、区切り文字を空白に設定し、next()を使用しています。 空白で区切られたコンテンツの次の部分を読み取るメソッド。

ファイル全体を読み取る

Scannerを使用できます ループを実行せずにファイル全体を一度に読み取るクラス。 “\\Z”を渡す必要があります このための区切り文字として。

scanner.useDelimiter("\\Z");
System.out.println(scanner.next());
scanner.close();
注:Scannerクラスは同期されていないため、スレッドセーフではありません。 結論

このチュートリアルで見たように、Javaには、テキストファイルを読み取るための手元のタスクの性質に応じて選択できる多くのメソッドが用意されています。 BufferedReaderを使用できます 大きなファイルを1行ずつ読み取るには。

内容が区切り文字で区切られているファイルを読み取る場合は、Scannerを使用します。 クラス。

また、JavaNIOのFilesを使用することもできます 小さいファイルと大きいファイルの両方を読み取るクラス。


  1. Rubyでファイルを読み書きする方法(例付き)

    今日は、Rubyでファイルを読み書きして、コンテンツを抽出し、新しいファイルを作成し、必要な情報を見つける方法を学びます。 これから説明します : コンテンツ 1Rubyでファイルを読み取る方法 2Rubyでファイルに書き込む方法 3つのRubyファイルメソッド 4つのディレクトリ操作 5FileUtilsモジュールの使用方法 6まとめ 6.1関連 やってみましょう! Rubyでファイルを読み取る方法 次のようにRubyでファイルを読み取ることができます: ファイルを開く 、open メソッド。 ファイルを読む 、ファイル全体、行ごと、または特定のバイト数。 ファイルを

  2. Windows 10 でメモリ ダンプ ファイルを読み取る方法

    PC が最近クラッシュした場合は、ブルー スクリーン オブ デス (BSOD) に直面したに違いありません。ブルー スクリーン オブ デス (BSOD) には、クラッシュの原因がリストされ、PC が突然シャットダウンします。現在、BSOD 画面は数秒間しか表示されておらず、その時点でクラッシュの原因を分析することはできません。ありがたいことに、Windows がクラッシュすると、クラッシュ ダンプ ファイル (.dmp) またはメモリ ダンプが作成され、Windows のシャットダウン直前にクラッシュに関する情報が保存されます。 BSOD 画面が表示されるとすぐに、Windows はクラ