「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