我正在尝试从文件夹中读取 XML 文件。读取文件后,我提取一个元素并将其写入文本文件中。
文件名看起来像这样
zey_3_20161020-092152_JK6_NO.xml
zey_57_20161020-092152_A_K6.xml
zey_256_20161020-092152_B_A.xml
zey_1000_20161020-092152_B_A.xml
但是当我阅读文件时,我没有得到正确的顺序。 我收到这样的订单:
zey_1000_20161020-092152_B_A.xml
zey_256_20161020-092152_B_A.xml
zey_3_20161020-092152_JK6_NO.xml
zey_57_20161020-092152_A_K6.xml
这是我的代码:
private String rgId;
private NodeList rgIdList;
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> counter = new ArrayList<String>();
String splitFile = null;
public ReadXML() throws ParserConfigurationException, SAXException
{
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
File folder = new File("C:/...");
File[] listFiles = folder.listFiles();
for (File file : listFiles) {
if (file.isFile()) {
System.out.println(file.getName());
Document document = builder.parse(file);
rgIdList = document.getElementsByTagName("id");
if (rgIdList.getLength() > 0) {
rgId = rgIdList.item(0).getTextContent().toString();
list.add( rgId);
}
}
}
FileWriter fw = new FileWriter("C:/....");
for (String str : list) {
fw.write(str + "\r\n");
}
fw.close();
System.out.println(list);
} catch (IOException e) {
System.out.println(e);
}
}
public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
new ReadXML();
}
谁能帮忙如何按正确的顺序对文件进行排序?预先感谢您
最佳答案
您的问题与您依赖 File#listFiles()
结果的顺序有关。虽然按照 javadoc 中的说明不能保证顺序:
There is no guarantee that the name strings in the resulting array will appear in any specific order; they are not, in particular, guaranteed to appear in alphabetical order.
如果您想要特定的顺序,您应该使用 Arrays.sort(T[] a, Comparator<? super T> c)
自行对文件进行排序。 .
File[] listFiles = folder.listFiles();
Arrays.sort(listFiles, myComparator);
for (File file : listFiles) {
...
}
关于java - Java从上到下读取文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217169/