读取文件名的开头并在java中创建具有该名称的文件夹

时间:2014-10-19 05:27:35

标签: java

我有以下文件: 1006_3906_33824_Finder2.gif, 1006_3906_33824_MapE.gif, 1006_3906_33824_Summary.txt, 1007_334_33098_Finder2.gif, 1007_334_33098_MapE.gif, 1007_334_33098_Summary.txt

我需要按数字排序文件而不是最后一部分。 该算法应读取字符串“1006_3906_33824_Finder2.gif”,并使用该部分文件创建一个文件夹:“1006_3906_33824”和“1007_334_33098_Finder2.gif”文件夹名为“1007_334_33098”等。

我如何用Java做到这一点?

代码:

public class Sorter {

public static void organizeIntoFolders() {
    File folder = new File("path");
    File[] listOfFiles = folder.listFiles();
    for (int i = 0; i < listOfFiles.length; i++) {
        if (listOfFiles[i].isFile()) {
            System.out.println(parseFilename(listOfFiles[i].getName()));
        }
    }
}

public static String parseFilename(String filename) {
    String s = filename.substring(0, filename.lastIndexOf('_') - 1);
    return s;
}

public static void makeDir(String dirname) {
    File dir = new File(dirname);
    if (!dir.exists()) {
        dir.mkdir();
    }
}
}

2 个答案:

答案 0 :(得分:2)

我想这是一个任务,所以我不会给你答案,但算法应该与此类似:

  1. 解析文件名(由_拆分并查找字母字符。)
  2. 从找到的位置删除前缀。
  3. 使用File类创建文件夹。
  4. 当然,您可以按照以下建议使用正则表达式。

    编辑:阐述......

    public static String parseFilename(String filename){
     String s = filename.substring(0, filename.lastIndexOf('_') - 1);
     return s;
    }
    
    public static void makeDir(String dirname){
     File dir = new File(dirname);
     if(!dir.exists())
      dir.mkdir();
    }
    

答案 1 :(得分:0)

@BoinQ您可以使用正则表达式轻松完成此操作。请参阅以下步骤

  • 创建正则表达式。
  • 通过表达式传递每个文件名,并使用组检索数字。
  • 使用检索到的值创建文件夹并将文件放入其中。

您可以参考正则表达式信息here和java实现here。在上述情况下,使用正则表达式将是最可靠的方法。