Javaのテキストファイルの読み書きと、フォルダとファイルの存在チェックのサンプルです。
| 確認環境 ・Java 8 |
目次
- Filesクラス
- Pathsクラス - getメソッド
- テキストファイルに新規で書き込む(write)
- テキストファイルに追記で書き込む(write)
- テキストファイルを読み込む(readAllLines)
- 文字コードの指定の方法
- フォルダの存在チェック(isDirectory)
- ファイルの存在チェック(exists)
Filesクラス
- ファイルを操作するクラスです。
- Java7で導入されました。
- 以下はJava8 API仕様のFilesクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/nio/file/Files.html
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メソッドでファイルの存在チェックを指定しています。
関連の記事