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