4

私のJavaプログラムは、すべての新しいファイルがファイルではなくフォルダーであると考え続けています。

私はバグハンティングを行ってきましたが、今では を使用してファイルを保存できませんFileWriter。新しいファイルを作成し、それがファイルかディレクトリかを確認すると、ディレクトリであると表示されます。

私はもともと作成された長いパスを持っていたので、それを取り除きました。また、以前は別のスレッドで書き込みを行っていましたが、それも削除しましたが、それでも問題は解決しません。

シンプルなだけで新しいクラスを作成すると

java.io.File file = new java.io.File("test.csv");
output.print(file.isDirectory());

これは真実として出てきます。

ただし、javax.imageio.* を使用してグラフィックを保存することはできます。

誰でも助けることができますか?

編集: 私は Java 1.7.0 で eclispe 3.7.2 を使用しています... File.isFile() は false、File.createNewFile() は失敗します (java.io.FileNotFoundException (アクセスが拒否されました))。指定したディレクトリを見ると、そこに test.csv という名前の新しいフォルダーがあります。そのため、csvファイルであると指定しているにもかかわらず、新しいフォルダーを作成していて、フォルダーとして扱っています。ファイルタイプがない場合でも、他のファイルタイプを試しました。しかし、同じ問題。ファイルではなくフォルダだと思います。これは私を困惑させています。

4

4 に答える 4

9

Javaはそれ自体でファイルやディレクトリを作成new File()しません。したがって、そうするコードを表示する必要があります。この時点で「test.csv」を参照している場合file.mkdirs();、 「test.csv」というディレクトリが作成されます。file

于 2012-09-18T08:36:11.503 に答える
1

サンプル コードでは、実際にはまだファイルを作成していません。娯楽のために、 の値も出力できますfile.isFile()か?

次に、同じことを行いますが、実際にファイルを取得するには、eg file.createNewFile() firstを呼び出します。

于 2012-09-18T08:37:03.490 に答える
0

問題が見つかりました。さすがに自分の愚かさはわかっていた。ファイル名をファイルパスに追加した後、 File.mkdirs() メソッドを移動し、ファイルを含むフルパスをディレクトリにしました。その後、すでにディレクトリとして作成されているため、書き込みできませんでした。

mkdirs() コマンドなしでテストしたと断言できたかもしれませんが、そうではないと思います。しかたがない。愚かさまでもう1つスクラッチし、可能なすべてのオプションを適切に削除しません。

すべてのヒントをありがとう!

于 2012-09-18T13:06:48.680 に答える
0

何かの署名が間違っていると思います。作成しようとしているファイルと同じ名前のプログラムがあるディレクトリがある可能性があります。isFile()関数を使用してこれをテストし、ファイルではないことを確認してください。getAbsolutePath()を使用してパスを取得して 、このディレクトリが設定されている場所をローカライズしてください。

于 2012-09-18T08:37:25.560 に答える