java - Java从上到下读取文件夹中的文件

标签 java xml file

我正在尝试从文件夹中读取 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/

相关文章:

xml - 我可以让一个 XML 架构 (XSD) 包含另一个 XML 架构吗?

javascript - Electron/Node.js - 如何从另一个目录生成 python 脚本

perl - 如何使用 WWW::Mechanize 或任何 Perl 模块下载文件?

java - DWR有时会死在GAE服务器上

java - 使用 HttpURLConnection 发送帖子

xml - project.parent.name 和parent.name 之间的区别以及在pom.xml 中使用finalName

pythons 'print' 语句不调用 .write() 方法?

java - Liferay hibernate.cfg.xml 在 Liferay IDE 中制作的 portlet 中的位置

java - Scala IDE 错误 - 无法找到/加载主类

sql-server - SQL Server 表中的类型化 XML 更新