在Java中重命名多个文件时,如何使用不同的前缀?

时间:2014-04-23 21:49:38

标签: java pdf directory prefix file-rename

我正在尝试创建一个Java应用程序(带有swing),它使用set命名约定重命名pdf文件。目前文件名为:

1.pdf, 2.pdf...... 10.pdf, 11.pdf...... 20.pdf, 21.pdf etc.

所以我决定在文件名中添加前缀(ABC_0)。新文件名应为:

ABC_01.pdf, ABC_02.pdf.... ABC_10.pdf, ABC_11.pdf...... ABC_20.pdf, ABC_21.pdf etc.

到目前为止一切运作良好。我面临的唯一问题是,当前缀添加到数字10及以上的pdf文件名时,它会重命名为:

ABC_010.pdf, ABC_011.pdf...... ABC_020.pdf, ABC_021.pdf etc.

这是错误的。 0只应添加到pdf文件名中,编号为1-9。

你能帮我吗?

这是我需要帮助的代码。

        {
            String dir= txt_src.getText();
            String addPrefix= "ABC_0";
            File dirFile,dirFile1;
            File oldfile, newfile;
            String newname;
            String filenames[];
            int i, count;
            dirFile = new File(dir);
            if (!dirFile.exists() || !dirFile.isDirectory()) 
            {
                message("File not exist or not a directory");
            }
            filenames = dirFile.list();
            for(i = count = 0; i < filenames.length; i++) 
            {
                if (filenames[i].equals(".")) continue; 
                if (filenames[i].equals("..")) continue;
                dirFile1 = new File(dir+"\\"+filenames[i]); 
                if (!dirFile1.isDirectory())
                {oldfile = new File(dirFile, filenames[i]); 
                    newname = addPrefix + filenames[i]; 
                    newfile = new File(dirFile, newname); 
                    message("Files Renamed Successfully");
                    if (oldfile.renameTo(newfile)) count++; 
                    else 
                    {
                        message("Unable to rename " + oldfile);
                    }
                }
            }
        }

4 个答案:

答案 0 :(得分:0)

从addPrefix

中删除0
String addPrefix= "ABC_0";

使用此

String addPrefix= "ABC_";

更新了这一行

 newname = addPrefix+i + filenames[i]; 

答案 1 :(得分:0)

我只想创建2个不同的String变量并让它选择。检查数字是否小于10,如果是,请使用带有ABC_0的字符串

如果它大于10,请使用不带0 ABC_

的字符串

答案 2 :(得分:0)

检查我的小程序。它读取扩展名“.pdf”之前的数字。如果数字的长度为1,则在添加前缀之前添加0。

String pdfNames[] = new String[] { "2.pdf", "6.pdf", "19.pdf", "26.pdf" };
String newNames[] = new String[pdfNames.length];
String prefix = "ABC_";
for (int i = 0; i < pdfNames.length; i++) {
    String name = pdfNames[i].split(".pdf")[0];
    System.out.println(name);

    newNames[i] = prefix;

    if (name.length() == 1)
        newNames[i] += "0";

    newNames[i] += name;
    System.out.println(newNames[i]);
}

但请考虑一下名为123,1234等文件的情况。然后你必须添加多个0。

修改

在您的代码中

filenames = dirFile.list();
for(i = count = 0; i < filenames.length; i++) 
{
    ...

首先使用文件名列表填充String数组filenames; - )

在for循环中,您可以通过filenames[i].split(".pdf")[0].length()获取文件名的长度。

答案 3 :(得分:0)

您可以确保用这样的零填充文件名:

public String pad(String fileName, int len) {
  if (fileName.length() >= len) {
    return fileName;
  }
  String padded = "0000000" + fileName;  // Change the number of zeros to your needs
  return  padded.substring(padded.length() - len); 
}

然后你只需要在填充值前加上“ABC_”:

String newName = "ABC_" + pad(oldNmame, 6); // produce 6 characters per String

产生如下结果:

10.pdf gets ABC_10.pdf
1.pdf gets ABC_01.pdf
a.pdf gets ABC_0a.pdf
100.pdf gets ABC_100.pdf
a.a gets ABC_000a.a