0

Tomcat にデプロイされた Java Web アプリがあり、Web アプリのディレクトリ内に配置された特定のファイルを読み取る必要があります。

読み取ろうとするパス:

String path = "C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\my-server\\config\\myfile.csv";
File file = new File(path);
if(file.exists())
    //read the file...

file.exists()false を返しますが、Windows エクスプローラーでそのパスに移動できます。これはある種の権限の問題ですか?何が間違っている可能性があるかについての手がかりはありますか?私はとても迷っています。

4

4 に答える 4

0

次のようにバックスラッシュをエスケープしてみてください。

String path = "C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\myserver\\config\\myfile.csv";

また、「ファイル」への参照が間違っていることにも気付きました。

if(File.exists())

間違ってコピーしただけかもしれません:)。そうでなければ私は知りません。お役に立てれば。

于 2013-06-21T15:46:28.740 に答える
0

最初に言うことは、'\' を '\' に置き換えることです。

これが機能しない場合は、CSV が配置されている特定のフォルダーのセキュリティ アクセス許可を確認してください。

ユーザーを追加everyoneし、読み取りアクセスを許可します。

さらに、ハードコーディングされたパスを配置することは、(デプロイされた war の) 特定の場所からファイルを読み取ることができる Java エンタープライズ関数を使用できるため、ファイルを読み取るための最良の方法ではありません。

于 2013-06-21T15:31:49.047 に答える
-1

まず第一に、絶対パスを使用しないでください。他の場所にデプロイするときにパスが常に保持されることを知っている人はいますか? 示されているように、相対パスを使用できます。

String contextPath = request.getContextPath();

それはあなたのwebappディレクトリを与えます、そしてあなたは次のようにパスを与えることができます

contextPath+="config\\myfile.csv"

またSystem.getProperty("file.separator");、プラットフォームに依存しないようにスラッシュの代わりに使用します。

于 2013-06-21T20:42:03.597 に答える