0

パスを確認して印刷しましたが、パスは存在しますが、ファイルが見つかりません。ローカルでコードを試してみましたが、うまくいきましたが、原因がわかりません(Javaで)。

filepath = "C:/FolderA/test.html";
File f1 = new File(filepath)
if (!f1.exists()) {
    System.out.println("File does not exist");
}
4

4 に答える 4

2

あなたが見ているものについて、3つの可能な説明を考えることができます:

  1. ショートカットが壊れている可能性があります。のjavadocはexists()言う:

    この抽象パス名が示すファイルまたはディレクトリが存在するかどうかをテストします。

    パス名が壊れたシンボリック リンクの名前である場合、パスが示すファイルまたはディレクトリは存在しません。(Java で開こうとすると、IOException が発生します。)

  2. アプリケーションには、ファイルを表示するための十分な権限がありません。たとえば、アクセス許可FolderAがプログラムが読み取れないようなものである場合、パス全体exists()を返す必要があります。false

  3. どういうわけか、ファイル システムに保存されているファイルのパス名、またはプログラムの Java 文字列リテラルのいずれかにファンキーな文字を入れることができました。ラテン文字 (az、AZ) のように見えますが、そうではない特定の Unicode 文字が、さまざまな西洋のアルファベットに含まれています。これらは、それぞれの文字を表示するために使用されるグリフによっては、見つけにくい場合があります。


最初の 2 つの理論は、関連するファイルとディレクトリを調べることでテストできます。

3 つ目は、それぞれの文字を 16 進数としてレンダリングできるツールを使用して、ソース コードとディレクトリ リストを調べる必要があります。

また、パス名を Java から (読み取り用に) 開いたり、(たとえば) メモ帳で開いたりするとどうなるかを確認する価値もあります。

于 2013-05-22T14:17:05.907 に答える
0

面白い人は、ファイル名 (またはディレクトリ名) にキリル文字e( ) を使用した可能性があります。?したがって、Java でファイルを一覧表示します。

while (file.getPath().length() > 3 && !file.exists()) {
    System.out.println("No such file: " + file.getPath());
    file = file.getParentFile();
    if (file == null) {
        break;
    }
}

if (file != null) {
    String[] children = file.list();
    System.out.println("Siblings: " + Arrays.toString(children));
}

または、そこに自分のファイルをコピーします。

于 2013-05-22T14:17:19.040 に答える
0

あなたのコードはまったく問題ありません。ファイルをチェックする必要があります。ファイルが実際に test.html であることを確認してください。ファイルに拡張子が付いている場合がありますが、実際には別の種類のファイルです。たとえば、ファイルは実際には

test.html.html

しかし、次のように表示されます

test.html

于 2013-05-22T13:46:53.297 に答える