Spring Bootでファイルの内容を読み込む方法は?
Spring Bootでは、ファイルをロードするには、リソースをロードするために使用されるインターフェースであるResourceLoaderを使用できます。これは、クラスパス内のファイル、URLリソース、そして他の外部リソースをロードすることができます。
以下にファイル内容を読み取る例を示します。
- リソースローダ
@Autowired
private ResourceLoader resourceLoader;
- リソースローダー
Resource resource = resourceLoader.getResource("classpath:myfile.txt");
上のコードは、クラスパスの myfile.txt ファイルを読み込みます。
- ネイティブな日本語でパラフレーズします。
InputStream inputStream = resource.getInputStream();
String content = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);
上記のコードでは、getInputStream() メソッドを使用してファイルの入力ストリームを取得し、readAllBytes() メソッドを使用して入力ストリームの内容をバイト配列として読み取り、最後に文字列のコンストラクタを使用してバイト配列を文字列に変換します。
完全なサンプルコードは以下のとおりです:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
@Component
public class FileLoader {
@Autowired
private ResourceLoader resourceLoader;
public String readFileContent() throws IOException {
Resource resource = resourceLoader.getResource("classpath:myfile.txt");
InputStream inputStream = resource.getInputStream();
String content = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);
return content;
}
}
上のコードでは、FileLoaderコンポーネントが定義され、readFileContent()メソッドでmyfile.txt ファイルの内容が読み取られています。
そうすることで、他のSpring BeanでFileLoaderを注入し、readFileContent()メソッドを呼び出してファイルのコンテンツを取得できます。