我使用這段代碼,發現我的程序的其他部分在給定的目錄中創建XML文件:Java:如何獲得File.listOfFiles非遞歸在Linux上工作?
String fileName;
File folder = new File(mainController.XML_FILES_LOCATION);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
fileName = listOfFiles[i].getName();
if (fileName.endsWith(".xml")) {
Document readFile = readFoundXmlFile(fileName);
if (readFile != null) {
boolean postWasSuccesful = mainController.sendXmlFile(readFile, fileName);
reproduceXmlFile(readFile, fileName, postWasSuccesful);
deleteXmlFile(fileName);
}
}
}
}
它所做的是它的內容是被放置在指定的目錄中的所有XML文件,它將其發送到一個URL並將其複製到一個子目錄(根據布爾postWasSuccedful發送''或'失敗'),並刪除原件,以便它不會再次發送。
在Windows中,按預期工作,但我已將工作代碼傳送到Linux機器,並突然它在發送bla.xml的循環中發送,然後一秒後發送\ bla.xml,並再次發送第二個後來發送\ sent \ bla.xml然後發送\ sent \ sent \ bla.xml等
爲什麼Linux自己決定listFiles()是遞歸的?而且,更好的是,如何預防這種情況?我可以在if語句中添加一個額外的檢查以查找以.xml結尾的文件,該文件不存在fileName中允許的directory-char,但這是我不希望的替代方法中的文件數量的解決方法。 up目錄永遠不會很高,而發送的子目錄中的文件數量可能會在一段時間後變得相當高,我不希望這段代碼變慢
你的精神力量是真正強大的。順便說一句,我不知道任何理由實際使用\在任何地方,/在窗口中工作正常.... – Ingo
糟糕...你是對的 – JeroenV