java에서 폴더/디렉토리를 검색하고 Java의 해당 폴더/디렉토리로 이동하려고합니다. 나는 그것이 시스템 유틸리티라고 생각한다? 그 밖의 자습서 나 주제에 관한 책은 없습니까?Java를 사용하는 파일 시스템에서 "걸어 다니는"방법
감사합니다.)
java에서 폴더/디렉토리를 검색하고 Java의 해당 폴더/디렉토리로 이동하려고합니다. 나는 그것이 시스템 유틸리티라고 생각한다? 그 밖의 자습서 나 주제에 관한 책은 없습니까?Java를 사용하는 파일 시스템에서 "걸어 다니는"방법
감사합니다.)
이 코드를 사용하여 폴더의 모든 ZIP 파일을 가져옵니다. 이것을 재귀 적으로 호출하여 파일 객체가 하위 디렉토리가 될지 계속 확인하십시오. 당신은 파일 시스템을 탐색 File에서 모양과 목록() 메소드를 수행하려는 경우
public List<String> getFiles(String folder) {
List<String> list = new ArrayList<String>();
File dir = new File(folder);
if(dir.isDirectory()) {
FileFilter filter = new FileFilter() {
public boolean accept(File file) {
boolean flag = false;
if(file.isFile() && !file.isDirectory()) {
String filename = file.getName();
if(!filename.endsWith(".zip")) {
return true;
}
return false;
}
};
File[] fileNames = dir.listFiles(filter);
for (File file : fileNames) {
list.add(file.getName());
}
return list;
}
java.io.File 클래스를 사용하여 검색 할 수 있습니다.
. 계층 구조를 탐색하는 데 재귀 적 방법이 필요합니다.
특정 주제에 대한 자습서 나 책을 모릅니다. 그러나이를 수행하는 방법은 java.io.File
클래스를 사용하는 것입니다. 예를 들어, list()
을 사용하여 디렉토리 내용의 목록을 가져올 수 있습니다. 그렇다면 isDirectory()
을 사용하고 재귀를 사용하여 전체 파일 트리를 검색하면됩니다.
Apache Commons FileUtils (참조 : http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html)와 특히 listFiles 메소드를 사용할 수 있습니다.이 메소드는 재귀 적으로이를 수행하고 필터를 사용합니다. 따라서 재귀를 직접 작성하고 언급 한 검색에 응답 할 수 있습니다.
for (File file : File.listRoots()[0].listFiles()) {
System.out.println(file);
}
같은 인쇄 디렉토리 만 :
FileFilter isDirectory = new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory();
}
};
for (File file : File.listRoots()[0].listFiles(isDirectory)) {
System.out.println(file);
}
여기
Apache Commons IO utilities. 또 다른 예입니다 권하고 싶습니다. 나는 모든 것을 읽는 것이 좋습니다. http://www.leepoint.net/notes-java/
나는 Apache Commons VFS을 사용했습니다.
이 같은 디렉토리의 읽고 내용을 위해 그것을 사용하는 것이 좋다 :
FileSystemManager fsManager = VFS.getManager();
FileObject path = fsManager.resolveFile("file:///tmp");
FileObject[] children = path.getChildren();
System.out.println("Children of " + path.getName().getURI());
for (int i = 0; i < children.length; i++)
{
System.out.println(children[ i ].getName().getBaseName());
}
아이들은 파일, 폴더 또는 getType()와 다른 무언가가 있으면 당신은 확인할 수 있습니다.
동일한 코드는 ZIP 또는 JAR 파일, FTP, SFTP 등을 읽는 데 적합합니다. resolveFile URL을 변경하면 as you can see here이됩니다.
왜 File 객체 대신 Strings/파일 이름을 사용하고 있습니까? –
위의 코드 샘플은 내 모듈 중 하나에서 폴더에있는 모든 ZIP 파일의 파일 이름 만 생성해야하므로 String으로 유지하고 웹 서비스에 위생 검사를 전달하는 것이 더 적합합니다. 이로 인해 우리는 발자국을 낮게 유지할 수있었습니다. – sangupta