私はあなたのファイルシステムを見ることを可能にするプログラムを作る過程にあります。 私はそれをテストしていましたが、問題に遭遇しました。「Documents and Settings」というディレクトリがC:\ドライブにあり、そこには存在しないと言っていました。これも「隠しフォルダ」オプションにして、私は見つけることができないよう、ディレクトリのかなり多くを出力し、何らかの理由で既存のフォルダがないJavaリストの配列..なぜですか?
File f = new File(path); //path being a path sent by the client, for example C:\
if(f.isFile()){
//TODO start downloading it.
out.println("ERR: no dir!");
return;
}
Server.log.log("System path requested: " + f.getAbsolutePath());
File[] files = f.listFiles();
for(int i = 0; i < files.length; i++){
File found = files[i];
if(!found.exists()){
continue;
}
if(found.isDirectory()){
out.println("dir:" + found.getName());
}else{
out.println(found.getName());
}
System.out.println("Printed " + found.getName());
}
out.println("ENDOFLIST"); //Notify the client it has to stop receiving data
:
は、これは私が私のファイルの配列を取得する方法です。
これらのディレクトリにアクセスしようとすると、ディレクトリの内容を読み取ろうとしますが、ディレクトリが存在しないため例外がスローされ、ソケット上でデータが送信されず、クライアントがフリーズします。
私の質問です:ファイル/ディレクトリが本当に存在するかどうかを確認する方法はありますか?コードブロックを見ると、ファイル/ディレクトリが存在しない場合は、それをソケットに書き込むのではなく、すでに続けていることに注意してください。
私はそれをGoogleに与えましたが、一致するものは見つかりませんでした。また、私は検索機能を行ってきましたが、それに似たものはありませんでした。
システムフォルダかどうか正確にチェックできますか? – Lolmewn
システムフォルダかどうか正確にチェックしますか?私は、BasicFileAtrributesのisRegularFile()とisDirectory()を見ていましたが、isSystemFileなんかは似ていませんでした。 – Lolmewn
次を参照してください。http://docs.oracle.com/javase/7/docs/api/java/nio/file/attribute/DosFileAttributes.html NTFSで操作しているためです。 'isSystem()'メソッドを持っています。 –