I've got code as below:
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);
}
}
The FileFilter
is working nicely, but listFiles()
seems to be listing the files in reverse alphabetical order. Is there some quick way of telling listFile()
to list the files in alphabetical order?
This is my code:
try {_x000D_
String folderPath = "../" + filePath.trim() + "/";_x000D_
logger.info("Path: " + folderPath);_x000D_
File folder = new File(folderPath);_x000D_
File[] listOfFiles = folder.listFiles();_x000D_
int length = listOfFiles.length;_x000D_
logger.info("So luong files: " + length);_x000D_
ArrayList<CdrFileBO> lstFile = new ArrayList< CdrFileBO>();_x000D_
_x000D_
if (listOfFiles != null && length > 0) {_x000D_
int count = 0;_x000D_
for (int i = 0; i < length; i++) {_x000D_
if (listOfFiles[i].isFile()) {_x000D_
lstFile.add(new CdrFileBO(listOfFiles[i]));_x000D_
}_x000D_
}_x000D_
Collections.sort(lstFile);_x000D_
for (CdrFileBO bo : lstFile) {_x000D_
//String newName = START_NAME + "_" + getSeq(SEQ_START) + "_" + DateSTR + ".s";_x000D_
String newName = START_NAME + DateSTR + getSeq(SEQ_START) + ".DAT";_x000D_
SEQ_START = SEQ_START + 1;_x000D_
bo.getFile().renameTo(new File(folderPath + newName));_x000D_
logger.info("newName: " + newName);_x000D_
logger.info("Next file: " + getSeq(SEQ_START));_x000D_
}_x000D_
_x000D_
}_x000D_
} catch (Exception ex) {_x000D_
logger.error(ex);_x000D_
ex.printStackTrace();_x000D_
}
_x000D_
In Java 8:
Arrays.sort(files, (a, b) -> a.getName().compareTo(b.getName()));
Reverse order:
Arrays.sort(files, (a, b) -> -a.getName().compareTo(b.getName()));
I think the previous answer is the best way to do it here is another simple way. just to print the sorted results.
String path="/tmp";
String[] dirListing = null;
File dir = new File(path);
dirListing = dir.list();
Arrays.sort(dirListing);
System.out.println(Arrays.deepToString(dirListing));
Source: Stackoverflow.com