SpringBootのsrc/main/resources配下のファイルを読み込むサンプルです。
(確認環境:Spring Boot 2.5,JDK 11)
目次
サンプル | src/main/resources配下のファイルを読む |
コントローラ (Paths.getを使用) | |
コントローラ (ClassPathResourceを使用) | |
設定ファイル(application.properties) |
src/main/resources配下のファイルを読む
画面を表示するとファイルから読み取った値をコンソールに表示します。
ファイルの読み込み方法としてPaths.getとClassPathResourceの2つのサンプルがあります。
http://localhost:8765でアクセスします。
読み込むファイル(テストファイル)
2行あります。
コントローラ (Paths.getを使用)
Paths.getを使用したコードです。
package com.example.demo;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
private String TESTPATH = "src/main/resources/file";
@GetMapping("/")
public String write1() {
Path path = Paths.get(TESTPATH,"テストファイル.txt");
List<String> line;
try {
line = Files.readAllLines(path);
for (String s : line) {
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();
}
return "hello";
}
}
17行目は、パスとファイル名を指定してPathのオブジェクトを生成しています。
20行目は、各行を読み込みリストにしています。
コントローラ (ClassPathResourceを使用)
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 MainController {
private String TESTPATH = "file/";
private String fileName = "テストファイル.txt";
@GetMapping("/")
public String write1() {
File resource = null;
try {
resource = new ClassPathResource(
TESTPATH + fileName).getFile();
} catch (IOException e1) {
e1.printStackTrace();
}
List<String> line;
try {
line = Files.readAllLines(resource.toPath());
for (String s : line) {
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();
}
return "hello";
}
}
設定ファイル(application.properties)
server.port = 8765
ポート番号を変更しています。
関連の記事