반응형
파일화 방법.list 파일화일 알파벳 순으로 표시합니까?
코드는 다음과 같습니다.
class ListPageXMLFiles implements FileFilter {
@Override
public boolean accept(File pathname) {
DebugLog.i("ListPageXMLFiles", "pathname is " + pathname);
String regex = ".*page_\\d{2}\\.xml";
if(pathname.getAbsolutePath().matches(regex)) {
return true;
}
return false;
}
}
public void loadPageTrees(String xml_dir_path) {
ListPageXMLFiles filter_xml_files = new ListPageXMLFiles();
File XMLDirectory = new File(xml_dir_path);
for(File _xml_file : XMLDirectory.listFiles(filter_xml_files)) {
loadPageTree(_xml_file);
}
}
그FileFilter
정상적으로 동작하고 있지만listFiles()
파일이 알파벳 역순으로 나열되어 있는 것 같습니다.그 사실을 빨리 알 수 있는 방법은 없을까?listFile()
파일을 알파벳 순으로 나열할 수 있습니까?
그listFiles
필터가 있든 없든 메서드는 순서를 보장하지 않습니다.
단, 어레이는 반환되며 이 어레이를 사용하여 정렬할 수 있습니다.Arrays.sort()
.
File[] files = XMLDirectory.listFiles(filter_xml_files);
Arrays.sort(files);
for(File _xml_file : files) {
...
}
이것은, 다음과 같은 이유로 동작합니다.File
는 동등한 클래스이며 기본적으로는 경로 이름을 사전 편집순으로 정렬합니다.다른 방식으로 정렬하려면 자체 비교기를 정의할 수 있습니다.
스트림을 사용하는 경우:
보다 현대적인 접근법은 다음과 같습니다.특정 디렉토리에 있는 모든 파일의 이름을 알파벳 순으로 인쇄하려면 다음 절차를 수행합니다.
Files.list(Paths.get(dirName)).sorted().forEach(System.out::println)
를 교환해 주세요.System.out::println
파일명으로 하고 싶은 대로 할 수 있습니다.로 끝나는 파일 이름만 원하는 경우"xml"
다음 작업을 수행합니다.
Files.list(Paths.get(dirName))
.filter(s -> s.toString().endsWith(".xml"))
.sorted()
.forEach(System.out::println)
다시 인쇄를 원하는 처리 작업으로 교체합니다.
Java 8의 경우:
Arrays.sort(files, (a, b) -> a.getName().compareTo(b.getName()));
역순서:
Arrays.sort(files, (a, b) -> -a.getName().compareTo(b.getName()));
앞서 말한 답변이 여기서 하는 가장 좋은 방법이라고 생각합니다. 정렬된 결과를 출력하기만 하면 됩니다.
String path="/tmp";
String[] dirListing = null;
File dir = new File(path);
dirListing = dir.list();
Arrays.sort(dirListing);
System.out.println(Arrays.deepToString(dirListing));
코드는 다음과 같습니다.
try {
String folderPath = "../" + filePath.trim() + "/";
logger.info("Path: " + folderPath);
File folder = new File(folderPath);
File[] listOfFiles = folder.listFiles();
int length = listOfFiles.length;
logger.info("So luong files: " + length);
ArrayList<CdrFileBO> lstFile = new ArrayList< CdrFileBO>();
if (listOfFiles != null && length > 0) {
int count = 0;
for (int i = 0; i < length; i++) {
if (listOfFiles[i].isFile()) {
lstFile.add(new CdrFileBO(listOfFiles[i]));
}
}
Collections.sort(lstFile);
for (CdrFileBO bo : lstFile) {
//String newName = START_NAME + "_" + getSeq(SEQ_START) + "_" + DateSTR + ".s";
String newName = START_NAME + DateSTR + getSeq(SEQ_START) + ".DAT";
SEQ_START = SEQ_START + 1;
bo.getFile().renameTo(new File(folderPath + newName));
logger.info("newName: " + newName);
logger.info("Next file: " + getSeq(SEQ_START));
}
}
} catch (Exception ex) {
logger.error(ex);
ex.printStackTrace();
}
언급URL : https://stackoverflow.com/questions/7199911/how-to-file-listfiles-in-alphabetical-order
반응형
'programing' 카테고리의 다른 글
OutputStream에서 InputStream을 생성하는 가장 효율적인 방법 (0) | 2022.10.03 |
---|---|
명령줄을 통해 JVM args를 Maven에 전달하는 방법이 있습니까? (0) | 2022.10.03 |
Promise의 처리 오류입니다.모든. (0) | 2022.10.03 |
PHP 스크립트의 명령줄과 http 실행을 결정하는 표준 방법은 무엇입니까? (0) | 2022.10.03 |
Java에서 여러 변수를 동일한 값으로 초기화 (0) | 2022.10.03 |