我一直在尝试编写一个在特殊目录中查找.cbr
文件的程序,并使它们看起来像我需要的那样。
当我在输入控制台中看到字符和字符串时(我正在检查所有内容,我认为问题与其他内容有关)一切看起来都很好,所以我认为问题File.renameTo
无论我的输入是什么,最后我(如果那些文件是.cbr)像[C @ 2d363fb3(实例) 这是我的代码:
import java.io.File;
import java.io.IOException;
public class CBR_Manager {
public static void main(String[] argv) throws IOException {
File folder = new File("\\Users\\Admin\\Desktop\\For comics managing");
File[] listOfFiles = folder.listFiles();
boolean b;
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
File f = new File("C:\\Users\\Admin\\Desktop\\For comics managing\\" + listOfFiles[i].getName());
int j = 0; b = false;
String name = f.getName();
if (name.endsWith(".cbr")) {
char[] Name = new char[100];
name.toCharArray();
System.out.println(name);
while ((b != true) || (j + 4 < name.length())) {
if ((b == false) && (Character.isDigit(name.charAt(j))) && (Character.isDigit(name.charAt(j + 1))) && (!Character.isDigit(name.charAt(j + 2)))) {
for (int k = 0; k < j; k++) {
Name[k] = name.charAt(k);
}
Name[j] = '0';
Name[j + 1] = name.charAt(j);
Name[j + 2] = name.charAt(j + 1);
Name[j + 3] = '.';
Name[j + 4] = 'c';
Name[j + 5] = 'b';
Name[j + 6] = 'r';
b = true;
for (int l=0; l<j+7; l++) {
System.out.println(Name[l]);
}
int EndOfNewCBRIncluded = j + 6;
int OldIncludedDeleteEdge = j + 2;
int NewIncludedDeleteEdge = j + 3;
} else if ((b == false) && (Character.isDigit(name.charAt(j))) && (!Character.isDigit(name.charAt(j + 1))) && (!Character.isDigit(name.charAt(j + 2)))) {
for (int k = 0; k < j; k++) {
Name[k] = name.charAt(k);
}
Name[j] = Name[j + 1] = '0';
Name[j + 2] = name.charAt(j);
Name[j + 3] = '.';
Name[j + 4] = 'c';
Name[j + 5] = 'b';
Name[j + 6] = 'r';
b = true;
for (int l=0; l<j+7; l++) {
System.out.println(Name[l]);
}
int EndOfNewCBRIncluded = j + 6;
int OldIncludedDeleteEdge = j + 1;
int NewIncludedDeleteEdge = j + 3;
} else if ((b == false) && (Character.isDigit(name.charAt(j))) && (Character.isDigit(name.charAt(j + 1))) && (Character.isDigit(name.charAt(j + 2)))) {
for (int k = 0; k < j + 3; k++) {
Name[k] = name.charAt(k);
}
Name[j + 3] = '.';
Name[j + 4] = 'c';
Name[j + 5] = 'b';
Name[j + 6] = 'r';
b = true;
for (int l=0; l<j+7; l++) {
System.out.println(Name[l]);
}
int EndOfNewCBRIncluded = j + 6;
int OldIncludedDeleteEdge = j + 3;
int NewIncludedDeleteEdge = j + 3;
}
j++;
//(name.charAt(j) != '.') &&(name.charAt(j + 1) != 'c') && (name.charAt(j + 2) != 'b') && (name.charAt(j + 3) != 'r')
}
f.renameTo(new File("C:\\Users\\Admin\\Desktop\\For comics managing\\" + Name));
}
}
System.out.println("conversion is done");
}
}
}
我该怎么办? 这是我的第二个编程周,我希望我的代码不那么令人不安
答案 0 :(得分:0)
正如bradimus和BackSlash暗示的那样,当你可能应该使用String或StringBuilder时,你正在使用char [],但话虽如此,你正在尝试打印出只打印引用ID的char []。试试这个:
f.renameTo(new File("C:\\Users\\Admin\\Desktop\\For comics managing\\" + String.valueOf(Name).trim()));