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

在java中读取文件名的开头并使用该名称创建文件夹,java,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\u 3906\u 33824\u Finder2.gif”,并使用文件的这一部分

我有以下文件: 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\u 3906\u 33824\u Finder2.gif”,并使用文件的这一部分创建一个文件夹:“1006\u 3906\u 33824”和“1007\u 334\u 33098\u Finder2.gif”以及名为“1007\u 334\u 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();
    }
}
}
公共类分拣机{
公共静态void organizeIntoFolders(){
文件夹=新文件(“路径”);
File[]listOfFiles=folder.listFiles();
for(int i=0;i
@BoinQ使用正则表达式可以非常轻松地完成这项工作。请参阅以下步骤

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

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

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

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

    编辑:详述

    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();
    }
    

    我从来都不懂正则表达式,我根本不知道如何让它抓住数字这不是作业这是一个爱好项目,我正在尝试对我从中提取的图像和其他类似页面进行排序。你觉得我的答案有用吗?或者我应该详细说明一下吗?我想你必须详细说明一下。子字符串有一个错误,我将尝试发布我的代码,它可能不起作用。输入错误。将子字符串更改为子字符串。