Java テキストファイルの読み書きのサンプル(Filesクラス)

Javaのテキストファイルの読み書きと、フォルダとファイルの存在チェックのサンプルです。

確認環境
・Java 8

目次

Filesクラス

Pathsクラス - getメソッド

1 public static Path get(URI uri)
2 public static Path get(String first,String... more)
  • Pathオブジェクトを返すメソッドです。
  • PathオブジェクトはFilesクラスのメソッドに指定します。
  • 1は、引数にパスをセットします。戻り値はPathオブジェクトです。
  • 2は、引数にパスとファイル名をセットします。戻り値はPathオブジェクトです。
  • 以下はJava8 API仕様のPathsクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/nio/file/Paths.html

テキストファイルに新規で書き込む(write)

テキストファイルに新規で書き込むサンプルです。

package test1;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.List;
 
public class Test1 {
    public static void main(String[] args) {
        String dir = "E:\\Test5";
        String filename = "test1.txt";
        String charset = "MS932";
     
        List<String> listA = new ArrayList<>();
        listA.add("あ1");
        listA.add("い2");
     
        try {
            Files.write(Paths.get(dir, filename), listA,
            Charset.forName(charset), 
            StandardOpenOption.TRUNCATE_EXISTING);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

21行目は、writeメソッドです。
22行目は、文字コードを指定しています。
23行目は、StandardOpenOption.TRUNCATE_EXISTINGを指定します。

 

テキストファイルに追記で書き込む(write)

テキストファイルに追記で書き込むサンプルです。

package test1;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.List;
 
public class Test1 {
    public static void main(String[] args) {
        String dir = "E:\\Test5";
        String filename = "test1.txt";
        String charset = "MS932";
     
        List<String> listA = new ArrayList<>();
        listA.add("あ1");
        listA.add("い2");
     
        try {
            Files.write(Paths.get(dir, filename), listA,
            Charset.forName(charset), 
            StandardOpenOption.APPEND);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

21行目は、writeメソッドです。
22行目は、文字コードを指定しています。
23行目は、StandardOpenOption.APPENDを指定します。

 

テキストファイルを読み込む(readAllLines)

テキストファイルを読み込むサンプルです。

package test1;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
 
public class Test1 {
    public static void main(String[] args) {
        String dir = "E:\\Test5";
        String filename = "test1.txt";
        String charset = "MS932";
     
        try {
            List<String> line = Files.readAllLines(
            		Paths.get(dir, filename),
                    Charset.forName(charset));
            for (String s : line) {
                System.out.println(s);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

16~18行目は、FilesクラスのreadAllLinesメソッドでファイルを読み込んでいます。
17行目は、文字コードを指定しています。

 

文字コードの指定の方法

CharsetクラスやStandardCharsetsクラスで指定します。

Charsetクラス

Charset.forNameで指定する主な文字コードです。

指定する文字コード名称
MS932
SJIS
Shift_JIS
UTF-8

https://docs.oracle.com/javase/jp/8/docs/api/java/nio/charset/Charset.html

 

StandardCharsetsクラス

StandardCharsetsクラスを使用したサンプルです。
文字コードを指定できます。ただしSJISの指定はできません。

public class Test1 {
    public static void main(String[] args) {
        String dir = "E:\\Test5";
        String filename = "test1.txt";
        Charset charset = StandardCharsets.UTF_8;
     
        try {
            List<String> line = Files.readAllLines(
            		Paths.get(dir, filename),
            		charset);
            for (String s : line) {
                System.out.println(s);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5行目は、StandardCharsetsでUTF-8を指定しています。

https://docs.oracle.com/javase/jp/8/docs/api/java/nio/charset/StandardCharsets.html

 

フォルダの存在チェック(isDirectory)

フォルダの存在チェックのサンプルです。

package test1;
import java.nio.file.Files;
import java.nio.file.Paths;
 
public class Test1 {
    public static void main(String[] args) {
        String dir = "E:\\test5";

        if (Files.isDirectory(Paths.get(dir))) {
            System.out.println("存在します");
        }else {
            System.out.println("存在しません");
        }
    }
}

9行目は、isDirectoryメソッドでフォルダの存在チェックをしています。

 

ファイルの存在チェック(exists)

ファイルの存在チェックのサンプルです。

package test1;
import java.nio.file.Files;
import java.nio.file.Paths;
 
public class Test1 {
    public static void main(String[] args) {
        String dir = "E:\\test5";
        String filename = "test1.txt";
 
        if (Files.exists(Paths.get(dir, filename))) {
            System.out.println("存在します");
        }else {
            System.out.println("存在しません");
        }
    }
}

10行目は、existsメソッドでファイルの存在チェックを指定しています。

関連の記事

Java フォルダ・ファイルの作成/削除/移動のサンプル(Filesクラス)

△上に戻る