1

Java で Eclipse を使用して File オブジェクトにアクセスしようとすると、ファイルにアクセスするたびにシステムから FileNotFoundException が送信されます。ファイルを手動で作成し、Eclipse のファイル ブラウザー内に配置しました。ファイルにはコンテンツがあるため、問題は空であるということではありません。ファイルを初期化しています

File file = new File(this.getClass().getResource("save.txt").toString());

そしてそれにアクセスする

PrintWriter p = new PrintWriter(file);

エラーを送信します。スタックトレースは、このクラスを作成する初期化のパス以外には何も流れません。例外は

java.io.FileNotFoundException: file:\C:\Users\Nathaniel\Downloads\ERPGE-Global%20Equestria%20Workspace\Swarm\bin\main\save.txt (The filename, directory name, or volume label syntax is incorrect)

このエラーの原因は何ですか?どうすれば修正できますか?

4

3 に答える 3

1

リソースがプロジェクトのビルドパスに含まれていることを確認する必要があります。

これは、次の2つの方法のいずれかで実行できます。

  1. それをフォルダー(「res」など)に入れ、そのフォルダーをビルドパスに追加します。これにより、フォルダー内のすべてのファイルがビルドパスに追加されます。
  2. ソースフォルダ(の1つ)に入れます。パッケージフォルダ内に配置する場合は、そのフォルダへの相対パスを含める必要があることに注意してください(以下を参照)。

個人的に私はオプション#1を好みます。

編集: resフォルダのサブディレクトリがあると便利な場合もあります。res / images / button.pngなどのファイルがあり、ビルドパスにresフォルダーを追加した場合は、文字列「images/button.png」を使用してファイルにアクセスする必要があります。

編集2:誤解を招く情報を修正しました。

于 2012-07-20T11:56:28.967 に答える
1

ファイルは、ソース フォルダーではなく、親プロジェクト フォルダー自体に配置する必要があります。ファイル パスを指定せずにファイルが作成された場合、ここにファイルが保存されます。

于 2014-04-18T00:10:44.927 に答える
0

ファイルへの実際のパスを指定し、ファイル オブジェクトを取得します。その後、それを使用できます。

File file = new File("C:\Users\Nathaniel\Downloads\save.txt");
PrintWriter p = new PrintWriter(file);

編集:

ファイル名の外部化:

外部フォルダー/パッケージにプロパティー・ファイル filedetails.properties を作成します。

fileName=C:\Users\Nathaniel\Downloads\save.txt

リソース バンドルへのアクセス。

ResourceBundle b=ResourceBundle.getBundle("external.filedetails") ;
String fileName=b.getString("fileName");
File file=new File(fileName);
于 2012-07-20T11:49:23.723 に答える