我正在尝试在其中包含一些子文件夹的目录中进行一些文件编辑。但是我的java应用程序不会深入子文件夹,只在第一个子文件夹中进行操作,如下所示
文件夹1(作品) -folder11(作品) --文件(作品) --folder111(不起作用) -folder12(作品) --文件(作品) -folder13(作品) --文件(作品)
我做错了什么?
这是我的代码:
btnBasla.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
File dir= new File(Path2.toString());
File files[]=dir.listFiles();
for (File f: files) {
if (f.isDirectory()) {
try {
listDir(f.toString());
} catch (IOException e1) {
e1.printStackTrace();
}
} else {
if(f.getName().lastIndexOf('.')>0) {
int lastIndex = f.getName().lastIndexOf('.');
String str = f.getName().substring(lastIndex);
if(str.equals(".txt") || str.equals(".sub") || str.equals(".srt")) {
try {
String sonuc = islem.koddegıstır(f.getAbsolutePath());
textField.append(sonuc+"\n");
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
}
}
public void listDir (String dir) throws IOException{
File place = new File(dir);
if(place.isDirectory()){
File files[]= place.listFiles();
for (File f:files) {
if (f.isDirectory()) {
listDir(f.getName());
} else {
if(f.getName().lastIndexOf('.')>0) {
int lastIndex = f.getName().lastIndexOf('.');
String str = f.getName().substring(lastIndex);
if(str.equals(".txt") || str.equals(".sub") || str.equals(".srt")) {
String sonuc = islem.koddegıstır(f.getAbsolutePath());
textField.append(sonuc+"\n");
}
}
}
}
}
}
});
最佳答案
列出文件的函数出现问题。
我认为您应该使用此功能获取子文件夹中的所有文件。
public List<File> listFiles(String dirPath) {
List<File> files = new ArrayList<>();
File dir = new File(dirPath);
if(dir.isDirectory()) {
for(File file : dir.listFiles()) {
if(file.isDirectory()) files.addAll(listFiles(file));
else files.add(file);
}
}
return files;
}
如您所见,该函数递归地列出文件。
关于java 深入列出目录并进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49964321/