2017-09-12 4 views
0

カスタムの場所からリソースを取得:春ブーツは、私は自分のアプリケーションのカスタムリソースハンドラは次のように設定されている

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry 
     .addResourceHandler("/external/**") 
     .addResourceLocations("file:" + sharedResourceRootPath); 
} 

私はリソースを取得する方法を見つけることができません

@Value("${spring.configurateur.data}") 
    private String sharedResourceRootPath; 

    // with spring.configurateur.data: C:/webapp/data 

私のマッピングこの場所の下で私のコード:

 try(InputStream ir = ResourceUtils.getURL("external", "parentDir", "conf.csv").openStream();) {......} 

が見つかりません...

java.io.FileNotFoundException: D:\external\parentDir\conf.csv (Le chemin d’accès spécifié est introuvable) 
+0

あなたは 'Cの下にファイルを取得したいですか:\ webappの外部\ parentDir \ conf.csv' \データ\?または、正確にどのファイルですか? 'Paths.get(...)'は、ファイルシステムのルートで始まらない場合、現在のディレクトリからの相対パスを作成するためです。 –

+0

はいファイルC:\ webapp \ data \ parentDir \ conf.csvを取得したいと思います。私は質問を編集し、Paths.getの部分を削除しました。 Thx – uncleBounty

答えて

0

あなたはsharedResourceRootPathへのファイルの相対のためのInputStreamを取得するために

Path p = Paths.get(sharedResourceRootPath, "external", "parentDir", "conf.csv"); 
InputStream is = Files.newInputStream(p); 

を使用することができます。

それとも使用

try (InputStream is = Files.newInputStream(
     Paths.get(sharedResourceRootPath, "external", "parentDir", "conf.csv")) { 
    ... 
} 
+0

私の問題は、ファイルをディスクから取り出すだけでなく、リソースとして取り出すことです。私はカスタムリソースハンドラを置くことでそれを考えました。これは、 "external/myfilename"というパスを使用するだけで、c:/ webapp/dataの下にあるファイルをリトリーブすることができます。 – uncleBounty

関連する問題