Я хочу считать файлы с помощью регулярных выражений, чтобы соответствовать именам файлов. Но мое регулярное выражение не совпадало.В моем "F: \" есть два файла с именами "a (1) .txt" и "a (1) (1) .txt". Но регулярное выражение может соответствовать только одному из них, количество равно 1. Но когда я изменяю "() "to" - "в моих регулярных выражениях и именах файлов. Это может соответствовать всем им. Я думаю, что проблема в моем регулярном выражении. Но я не знаю почему?вот мой код:
public static void main(String[] args) {
File dest = new File("F:\\");
File file = new File("E:\\a(1).txt");
move(file, dest);
}
public static void move(File file, File dest) {
//get file name
String name = file.getName();
int index = name.lastIndexOf(".");
String realname = name.substring(0, index);
String suffix = name.substring(index + 1, name.length());
//get files in F:\
File[] fs = dest.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
//get File name
String fname = pathname.getName();
return fname.equals(name) || fname.matches(realname + "\\(\\d+\\)." + suffix);
}
});
int count = fs.length;
System.out.println(count);
file.renameTo(new File(dest + realname + (count == 0 ? "." : "(" + count + ").") + suffix);
}