cmd에있는 명령 줄에서 인수로 전달되는 디렉토리에있는 모든 파일과 하위 디렉토리를 표시하는 프로그램을 만들었습니다.
첫 번째 조건 (if (f.isDirectory())) 주어진 인자가 디렉토리인지 아닌지 확인하는 것은 잘 작동합니다.
그렇다면 dir_content = f.list() 인 File.list() 메서드를 사용하여 디렉토리의 모든 파일 이름 목록을 문자열 dir_content의 배열에 저장합니다.
그런 다음 for 루프에서 문자열 배열 dir_content에 저장된 각 파일 이름에 대해 새 파일 개체가 만들어 질 때마다 파일 f1 = new File (dir_content [i])을 만든 다음 파일이 있는지 확인합니다 if (f1.exists()) 인 exists() 메서드를 사용합니다.
이제는 f1.exists은 주어진 디렉토리에 존재 함에도 불구하고 많은 파일에 대해 false를 반환합니다. 몇 개의 파일을 표시하고 하위 디렉토리를 표시하지 않습니다.
다음은 내 프로그램의 코드입니다 : -file.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());
}
}
}
}
}
누군가가 나에게 문제와 그 해결책 뒤에 이유를 알려주세요.
미리 감사드립니다.
'dir_content = f.list(); '만약 응용 프로그램을. 'File' 인스턴스로 처리 할 때'String' 인스턴스로 p * ss 처리를하지 마십시오. 대신 ['File.listFiles()'] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles%28%29)를 참조하십시오. –