File.renameTo把一切变成一团糟

时间:2016-11-01 20:08:25

标签: java

我一直在尝试编写一个在特殊目录中查找.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");
    }
  }
}

我该怎么办? 这是我的第二个编程周,我希望我的代码不那么令人不安

1 个答案:

答案 0 :(得分:0)

正如bradimus和BackSlash暗示的那样,当你可能应该使用String或StringBuilder时,你正在使用char [],但话虽如此,你正在尝试打印出只打印引用ID的char []。试试这个:

f.renameTo(new File("C:\\Users\\Admin\\Desktop\\For comics managing\\" + String.valueOf(Name).trim()));