java - java中以特定字母开头的文件列表

标签 java file serialization

我在相对目录(应用程序运行的目录)中有一些以“@”开头的文件,我需要用 java 打开所有这些文件。告诉我一个方法来完成它。如果有帮助,我正在研究 netbeans。它们基本上是 .ser 文件。所以我必须获取其中的对象

最佳答案

File dir = new File(".");
if(!dir.isDirectory()) throw new IllegalStateException("wtf mate?");
for(File file : dir.listFiles()) {
    if(file.getName().startsWith("@"))
        process(file);
}

重新审视此问题后,发现您还可以做一些其他事情。请注意我使用的文件过滤器。

import java.io.File;
class Test {
    public static void main(String[] args) {
        File dir = new File(".");
        if(!dir.isDirectory()) throw new IllegalStateException("wtf mate?");
        for(File file : dir.listFiles(new RegexFileFilter("@*\\.ser"))) {
                process(file);
        }
    }

    public static void process(File f) {
        System.out.println(f.getAbsolutePath());
    }
}

这是我使用的 RegexFileFilter

public class RegexFileFilter implements java.io.FileFilter {

    final java.util.regex.Pattern pattern;

    public RegexFileFilter(String regex) {
        pattern = java.util.regex.Pattern.compile(regex);
    }

    public boolean accept(java.io.File f) {
        return pattern.matcher(f.getName()).find();
    }

}

这是结果。请注意三个好文件和三个坏文件。如果您必须更定期地执行此操作,我建议您使用它,特别是如果您需要根据文件的其他属性而不是文件名来执行此操作,例如长度、修改日期等。

C:\junk\j>dir
 Volume in drive C has no label.
 Volume Serial Number is 48FA-B715

 Directory of C:\junk\j

02/14/2012  06:16 PM    <DIR>          .
02/14/2012  06:16 PM    <DIR>          ..
02/14/2012  06:15 PM                 0 @bad.serr
02/14/2012  06:15 PM                 0 @badser
02/14/2012  06:15 PM                 0 @first.ser
02/14/2012  06:15 PM                 0 @second.ser
02/14/2012  06:15 PM                 0 @third.ser
02/14/2012  06:15 PM                 0 bad@file.ser
02/14/2012  06:24 PM               692 RegexFileFilter.class
02/14/2012  06:24 PM               338 RegexFileFilter.java
02/14/2012  06:24 PM               901 Test.class
02/14/2012  06:24 PM               421 Test.java
              10 File(s)          2,352 bytes
               2 Dir(s)  10,895,474,688 bytes free

C:\junk\j>java Test
@first.ser
@second.ser
@third.ser

关于java - java中以特定字母开头的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5681999/

相关文章:

JavaFX 读取原始 RGB 图像

OSX 上的 Java 声音不支持 Port.Info 类型

java - 在 2 个阵列之间交换对时出现问题

file - 可以修改 HDFS 文件吗?

c++ - 在不同的运行中保持对象状态

c++ - 使用 boost 序列化、std::tr1::unordered_map 和自定义键的奇怪行为

java - 初学者的继承

java - Java异常中逐行读取文件的特定列

Java - Windows 中可能的主要方法参数

python - 如何从 Python 中的文件/流中懒惰地读取多个 JSON 值?