ディレクトリに存在するすべてのファイルとサブディレクトリを表示するプログラムを作成しました。ディレクトリ名は、cmdのコマンドラインから引数として渡されます。
最初のif条件(if(f.isDirectory()))は、指定された引数がディレクトリであるかどうかをチェックし、正常に機能します。
次に、dir_content = f.list()であるFile.list()メソッドを使用して、ディレクトリ内のすべてのファイル名のリストを文字列dir_contentの配列に格納します。
次に、forループで、String配列dir_contentに格納されているファイル名ごとに新しいファイルオブジェクトが作成されるたびに、File f1 = new File(dir_content [i])となり、exists()を使用してファイルの存在を確認します。if(f1.exists())であるメソッド。
ここで問題となるのは、f1.existsは、指定されたディレクトリに存在するにもかかわらず、多くのファイルに対してfalseを返すことです。いくつかのファイルが表示され、さらにサブディレクトリが表示されません。
以下は私のプログラムのコードです:-
import java.io.File;
class FileDemo1
{
public static void main(String[] a)
{
File f = new File(a[0]);
String[] dir_content;
if(f.isDirectory())
{
System.out.print(f.getName()+" is a directory containing ");
dir_content = f.list();
for(int i=0;i<dir_content.length;i++)
{
File f1 = new File(dir_content[i]);
if(f1.exists())
{
System.out.print("\n\t: "+f1.getName());
System.out.print(" "+f1.isFile());
System.out.print(" "+f1.isDirectory());
}
}
}
}
}
誰かが問題の背後にある理由とその解決策を教えてください。
前もって感謝します。