「Spring Boot 2.6」ClassPathResourceを使ってファイルを読むサンプル
環境
Windows10 64bit
Spring Boot 2.6.2
Spring Tool Suite 4
JDK 11
関数
1.public static List<String> readAllLines(Path path) throws IOException
ファイルからすべての行を読み取ります。ファイルから取得したバイトは、UTF-8文字セットを使用して文字にデコードされます。
戻り値:
ファイルから1つのListとして読み取られた行。そのListが変更可能であるかどうかは実装に依存しているため、特定できない
2.ClassPathResourceの定義
public class ClassPathResource
extends AbstractFileResolvingResource
クラスパスリソースの Resource 実装。リソースのロードに、指定された ClassLoaderSE または指定された ClassSE のいずれかを使用します。
クラスパスリソースがファイルシステムにある場合は java.io.File として解決をサポートしますが、JAR 内のリソースはサポートしません。
使用例
1.対象ファイル
src\main\resources\user.properties
以下の内容が含まれます
username=test07
addr=tokyo
year=2022
2.コントローラのソースコード(ClassPathResourceを利用)
package com.example.demo;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.List;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FileController {
private static final String FILEPATH = "/user.properties";
@GetMapping("/testfile")
public String funA() throws IOException {
File res = null;
try {
res = new ClassPathResource(FILEPATH).getFile();
} catch (IOException e1) {
e1.printStackTrace();
}
List<String> line;
try {
// ファイルの各行を読み込み
line = Files.readAllLines(res.toPath());
System.out.println("すべての行の内容" + line);
for (String ss : line) {
System.out.println(ss);
}
} catch (IOException e) {
e.printStackTrace();
}
return "arkgame";
}
}
3.動作確認
ブラウザ画面に「http://127.0.0.1:8080/testfile」を入力すると
コンソール画面に以下の内容が表示されます
すべての行の内容[username=test07, addr=tokyo, year=2022]
username=test07
addr=tokyo
year=2022