【问题标题】:naming a bunch of file using java [closed]使用java命名一堆文件[关闭]
【发布时间】:2017-06-16 23:44:07
【问题描述】:

我想用 java 代码重命名一堆文件。 我有重命名文件的代码:

public class NamingTest {

public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);
    // change file names in 'Directory':
    System.out.println("enter the directory");
    String absolutePath = keyboard.nextLine();
    File dir = new File(absolutePath);
    File[] filesInDir = dir.listFiles();
    int i = 0;
    System.out.println("enter the constant name");
    String con = keyboard.nextLine();
    for(File file:filesInDir) {
        i++;
        String name = file.getName();
        System.out.println("enter the "+i+"next part");
        String nxt = keyboard.nextLine();
        String newName = i +"_"+ con + nxt+".pdf";
        String newPath = absolutePath+ "\\"+ newName;
        file.renameTo(new File(newPath));
        System.out.println(name + " changed to " + newName);
    }
} // close main()
} // close class

我在这段代码中有一个问题:该代码将新文件保存在给定目录的一步后退中,并且新重命名的文件具有最后一个目录名称。

示例:目录为“/Users/Omar/Documents/test”, 命名文件保存的位置是“/Users/Omar/Documents”,命名文件以“test/”为前缀。

真实示例:代码运行时他询问目录,我给他一个“/Users/Omar/Documents”,然后询问常量名(必须在所有文件上重复)我输入“m a s_”,然后永远文件,他要求下一个名称(文件与其他文件不同)。

我希望在“/Users/Omar/Documents/test”中获得一个名为“(number)m a s_(nxt).pdf”的文件。但代码给出的是“/test/(number) m a s_(nxt).pdf"。

我想为它制作一个 gui。

注意:我用的是 Mac

【问题讨论】:

  • "注意:我使用 Mac" - 注意:我使用咖啡 :-)
  • 您能否编辑您的问题。我很难理解你的英语。或许您应该 1) 更清楚地解释代码应该做什么,以及 2) 给出它实际上做错了什么的清晰示例。
  • @StephenC 我可能使用调试器,但Malcolm 用电锯解决了他的问题(他从来没有遇到过同样的问题两次) .
  • 好吧,奥马尔,如果你的英语能力很好,那么问题是你表达得不够清楚。
  • 什么是“一拳文件”?

标签: java file naming


【解决方案1】:

首先,解决此类问题的推荐方法是使用调试器;例如在“renameTo”调用上设置断点,看看实际的参数和结果是什么。

查看您的代码,我可以看到几个问题:

  1. 我的理解是Mac使用“/”作为文件分隔符,而你的代码使用“\”。我不确定Java运行时是否会将“\”转换为“/”......

  2. File.renameTo(File) 方法返回一个boolean 来说明重命名是否成功。你忽略了它。

我不确定这些问题是否会导致“问题”,但我没有 Mac,因此无法试用代码。


我想为它制作一个 gui。

这个问题太笼统了。我建议您查找并阅读有关如何在 Java 中实现 GUI 的教程。

【讨论】:

  • 我用真实示例编辑问题 :: 当代码运行时他要求目录:我给了他一个 "/Users/Omar/Documents" ,然后要求输入常量名称(必须在所有文件)我输入:“m a s_”,然后他要求输入下一个名称:(它与文件不同)。我希望在“/Users/Omar/Documents/test”中得到一个名为“(number)m a s_(nxt).pdf”的文件。但代码给出的是“/test/(number)m a s_( nxt).pdf"
  • 如果我的第 1 点和第 2 点不能解决您的问题,请参阅我的答案第一句中的建议。不幸的是,由于我不是 Mac“用户”/瘾君子,我无法重现您的问题 :-)
猜你喜欢
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2013-06-22
相关资源
最近更新 更多