【发布时间】:2012-05-17 16:57:17
【问题描述】:
我不是 Java 专家,但我正在制作的程序将处理高吞吐量问题。所以我想我会做一点众包的意见。情况是这样的。
Java 进程将监视要处理的文件的目录,这些文件将配对(要存储的数据文件和要编目的元信息的 xml 文件)。所以我需要获取当前文件的列表,检查所需的双胞胎,然后处理。
文件将始终具有匹配的文件名,并且仅在文件扩展名上有所不同,例如 文件名1.jpg 文件名1.xml 文件名2.jpg 文件名2.xml
到目前为止,我想到了三个选项。
使用 FilenameFilter 和 File.List(FileNamefilter) 调用来检查文件名的总文件是否大于 1。
使用两个文件名过滤器生成带 .xml 和不带 .xml 的文件列表,将非 XML 文件列表转换为 ArrayList 并调用 Collections.binarySearch()。
生成所有不带 .xml 扩展名的文件的列表,将此列表用作键/值对哈希映射的键,该键/值对假定基于文件名的 .xml 文件。然后遍历哈希列表并在处理前检查 .xml 孪生是否存在。
有什么想法吗?
编辑/评论
在查看了建议和修改之后,我现在使用两个 FilenameFilters,一个列出 XML 文件,一个不列出。 XML 文件列表去除了 xml 扩展名并转储到散列中。然后遍历数据文件列表,调用hashlist.contains()查看hashset中是否存在匹配项。
下面提到处理不完整文件的问题。正如我在 cmets 中所说,我假设新写入的文件在写入完成之前对非写入进程不可见(新文件,不打开编辑)
【问题讨论】:
标签: java file filenames processing-efficiency