我正在尝试创建一个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);
}
}
}
}
答案 0 :(得分:0)
从addPrefix
中删除0String 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