1
InputStream inp = new FileInputStream("src/main/resources/ExportHour.xls");

Java Spring プロジェクトの src/main/resources フォルダーにファイルがあります。コントローラの 1 つで入力ストリームを作成しようとしていますが、常にファイルが見つからないという例外が発生します。パスの場所をマシン上のファイルを具体的に指すように変更すると、正常に動作します。

ファイルがJavaプロジェクト内で見つかるようにする方法はありますか?

4

2 に答える 2

2

プロセスの作業ディレクトリを変更できるように思えます-それはあなたが思っている場所ではないのではないかと思います。たとえば、次のように書くことをお勧めします

File file = new File("src/main/resources/ExportHour.xls");

次に log file.getAbsolutePath()、使用している正確なファイルを確認します。

ただし、とにかくa を使用しないことはほぼ確実です。FileInputStream次のようなものを使用することをお勧めします。

InputStream inp = Foo.class.getResourceAsStream("/ExportHour.xls");

...Foo必要なリソースを含むクラスローダーを持つクラスの場合。

(または/resources/ExportHour.xls"、ビルド構造によっては可能性があります。)

そうすれば、これらすべてを jar ファイルにビルドした場合でも、リソースを開くことができます。

于 2012-09-26T20:14:10.240 に答える
2

春のClassPathResourceで試してください。

InputStream inp = new ClassPathResource("ExportHour.xls").getInputStream();

これは、maven の resources フォルダーが jar ファイルに直接配置されるためです。つまり、ExportHours.xls ファイルがルート ディレクトリの jar 内に配置されます。

于 2012-09-26T20:14:53.290 に答える