ホームページ  >  記事  >  Java  >  Springbootがjarパッケージにファイルを読み込んだ後にファイルにアクセスできない問題を解決する方法

Springbootがjarパッケージにファイルを読み込んだ後にファイルにアクセスできない問題を解決する方法

WBOY
WBOY転載
2023-06-03 16:38:182599ブラウズ

springboot はファイルを読み取りますが、jar パッケージにパッケージ化した後はファイルにアクセスできません

最新の開発では、jar パッケージにパッケージ化した後、springboot がファイルを読み取れない状況が発生しています。それは、パッケージ化後、ファイルの仮想パスが無効になり、ストリーム経由でのみ読み取ることができるということです。

ファイルはリソースの下にあります

public void test() {
  List<String> names = new ArrayList<>();
  InputStreamReader read = null;
  try {
   ClassPathResource resource = new ClassPathResource("name.txt");
 
   InputStream inputStream = resource.getInputStream();
   read = new InputStreamReader(inputStream, "utf-8");
   BufferedReader bufferedReader = new BufferedReader(read);
   String txt = null;
   while ((txt = bufferedReader.readLine()) != null) {
    if (StringUtils.isNotBlank(txt)) {
     names.add(txt);
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (read != null) {
    try {
     read.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }

springboot は jar パッケージのバックグラウンドの静的フォルダーにアクセスできません

1.ResourceUtils

通常、Spring Boot を作成するときはプロジェクト クラスパス以下のファイルをバックグラウンドで使用する場合がありますが、通常は

File file = ResourceUtils.getFile("classpath:static/image/image");

のように記述しますが、この場合は問題ありません。しかし、jar パッケージを実行した後、ファイルは見つかりません。

Resource の下にあるファイルは、jar ファイル内に存在します。ディスク上に実際のパスはありません。実際には、jar 内のパスです。そのため、ResourceUtils.getFile または this.getClass().getResource("") メソッドを通じてファイルを正しく取得できません。 ######この場合。プロジェクト ドキュメントがプロジェクトの外部に配置される場合がありますが、これらのドキュメントは誤って削除しやすくなります。

2.ClassPathResource

 ClassPathResource cpr = new ClassPathResource("static/image/image/kpg");
 InputStream in = cpr.getInputStream();

3.ResourceLoader

 public class ResourceRenderer {
 public static InputStream resourceLoader(String fileFullPath) throws IOException {
        ResourceLoader resourceLoader = new DefaultResourceLoader();
        return resourceLoader.getResource(fileFullPath).getInputStream();
    }
}

Usage

InputStream in = ResourceRenderer.resourceLoader("classpath:static/image/image");

これにより、jar パッケージの下のアクセスできないパスの問題が完全に解決されます。

以上がSpringbootがjarパッケージにファイルを読み込んだ後にファイルにアクセスできない問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。