SpringBoot src/main/resourcesのファイルを読む

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

ポート番号を変更しています。

関連の記事

SpringBoot フォームで入力チェック(バリデーション)

△上に戻る