使用Java 11和Java 7可以轻松地读取文本文件

总结

    Java 11 環境では Files.readString と Path.of を使用
    Java 7 環境では Files.readAllLines や Files.readAllBytes と Paths.get を使用

样例代码 Cat.java

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class Cat {

    public static void main(String[] args) throws IOException {
        String path = args[0];
        System.out.print(readString11(path));
        System.out.print(readString7(path));
        // String.join は Java 8 以降
        System.out.println(String.join(System.lineSeparator(), readLines7(path)));
    }

    /**
     * テキストファイルを読み込みます。Java 11 から使えるメソッド。
     * @param path 読み込むファイルのパス
     * @return ファイルの内容
     * @throws IOException
     * @throws OutOfMemoryError
     * @throws RuntimeException
     */
    public static String readString11(String path) throws IOException {
        return Files.readString(Path.of(path), Charset.forName("UTF-8"));
    }

    /**
     * テキストファイルを読み込みます。Java 7 から使えるメソッド。
     * @param path 読み込むファイルのパス
     * @return ファイルの内容
     * @throws IOException
     * @throws RuntimeException
     */
    public static String readString7(String path) throws IOException {
        return new String(Files.readAllBytes(Paths.get(path)), Charset.forName("UTF-8"));
    }

    /**
     * テキストファイルを読み込みます。Java 7 から使えるメソッド。
     * @param path 読み込むファイルのパス
     * @return ファイルの内容
     * @throws IOException
     * @throws RuntimeException
     */
    public static List<String> readLines7(String path) throws IOException {
        return Files.readAllLines(Paths.get(path), Charset.forName("UTF-8"));
    }
}

样本执行结果

编译。

$ javac Cat.java

准备一个文本文件。

$ cat sample.txt 
さんぷる
サンプル
SANNPURU

执行示例代码。

$ java Cat sample.txt 
さんぷる
サンプル
SANNPURU
さんぷる
サンプル
SANNPURU
さんぷる
サンプル
SANNPURU

确认操作环境

$ java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

$ uname -mrsv
Darwin 18.2.0 Darwin Kernel Version 18.2.0: Fri Oct  5 19:41:49 PDT 2018; root:xnu-4903.221.2~2/RELEASE_X86_64 x86_64

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.1
BuildVersion:   18B75

请查阅相关资料

    英語リファレンス

    Files (Java SE 11 & JDK 11 )
    Path (Java SE 11 & JDK 11 )

    日本語リファレンス

    Files (Java Platform SE 8 )
    Paths (Java Platform SE 8 )

bannerAds