我正在编写一个程序,该程序读取文件然后处理它们。目前,我正在使用BufferedReader从txt文件中读取文件列表。该txt文件是在执行以下操作的命令提示符下生成的:

dir > filelist.txt


然后将其裁剪为仅文件名。

我可以通过以下方式将其合并到脚本中:

//pseudo code(needs further directory specification)
Runtime run = Runtime.getRuntime();//pseudo code(needs further directory specification)
Process process = run.exec("dir > filelist.txt");


此命令以文件形式提供目录:

dd/mm/yyyy hh:mm       (filesize) file


拥有此文件后,我可以运行Regex提取文件名。

Pattern file = Pattern.compile("(\d){2}/(\d){2}/(\d){4}\s(\d){2}(:)(\d){2}\s(\d+)\s(.+)\.txt");

for (String fileline : filelist) {
    Matcher matchfile = file.matcher(fileline);
    if(matchfile.find()){
        filearray.add(matchfile.group().split("\\s")[3]);
    }
}


有没有更简单的方法可以从Java SE中的目录中仅获取文件名?这似乎有点漫长。

最佳答案

使用list()方法

File f = new File("d:\\MyFolder");
String[] fileNames = f.list();


您可以使用类似的方法进一步分离文件和目录

isFile()
isDirectory()


//////////////////已编辑//////////////////

假设我想找出此File对象是文件还是目录...

File f = new File("d:\\MyFolder");

if (f.isDirectory()) {

    System.out.println("Its a directory");
}

07-28 03:27
查看更多