2017-08-27 3 views
-3

私はspring maven Webアプリケーションを作成しています。 私のコードでは、classpathにあるファイルやディレクトリに対してさまざまな操作をしようとしています。 EXのために空のディレクトリにclass.getResourceを実行するときにNullを取得する

- 以下はinboxLocation(ディレクトリ)がすでにファイルがある場合にこれが正常に動作します

{ 
    URL resource = FileUtil.class.getResource(inboxLocation); //getting null when directory is empty 
    File directory = new File(resource.getPath()); 
    Collection<File> files = FileUtils.listFiles(directory, TrueFileFilter.TRUE, null); 
    ArrayList<File> fileArray = new ArrayList<>(files); 
    return fileArray.subList(0, Math.min(batchSize, fileArray.size())); 
} 

ディレクトリ内のすべてのファイルを取得するスニペット。 しかし、inboxLocationが空の場合、私はリソースにnullを取得しています。

ファイルをディレクトリに移動しようとする別の機能があります。 ディレクトリが空の場合でもこの方法は失敗します。

開発用プラットフォームとしてIntelliJを使用しています。

誰もがこのシナリオを処理する方法に役立つことができます。.. すべてのヘルプについては、getResourceの目的はread resources from a JAR fileにある

+4

IntelliJは問題とは関係ありません。あなたはストリームではなくファイルで考えるべきです。あなたのWebアプリケーションは、ファイルシステムへのアクセスに依存するべきではありません。 – duffymo

+0

私は同意します..私は適切なテスト環境をセットアップするためにこれをやっています – rajvishal777

+0

'' File'オブジェクトを取得するために 'getResource'を使う必要があるのはなぜですか? – aristotll

答えて

1

を高く評価しています。 a resource is data (images, audio, text, and so on)に注意してください。ディレクトリはリソースではありません。

Files.walkを使用して、ディレクトリエントリのストリームを取得します。

+0

暗黙の制限が正しくありません。リンクされているリソースは、Webコンテナのコンテキストでリソースの読み込みを議論しているので、関係するクラスローダはWebコンテナであり、JEE標準のjar、war、またはearアーカイブが検索されます。 [クラス#gerResource](https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource%28java.lang.String%29)を参照してください。 – alphazero

関連する問題