【问题标题】:Creating a text file with the current date and time as the file name in Java [duplicate]在Java中创建一个以当前日期和时间为文件名的文本文件[重复]
【发布时间】:2016-12-17 14:10:01
【问题描述】:

我正在尝试创建一个文本文件并在我的 GUI 应用程序中单击按钮时使用 Java 向其中添加一些详细信息,文本文件的名称必须是当前日期和时间以及文本文件的位置必须是相对的。这是我用来做这个的代码sn-p。

        public void actionPerformed(ActionEvent e){
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd_HH:mm:ss");
            Date date = new Date();
            String fileName = dateFormat.format(date) + ".txt";
            File file = new File(fileName);
            PrintWriter pw;
            try{
                if(file.createNewFile()){
                    pw = new PrintWriter(file);

                    //Write Details To Created Text File Here

                    JOptionPane.showMessageDialog(null, "The Statistics have successfully been saved to the file: "
                            + fileName);
                }else{
                    JOptionPane.showMessageDialog(null, "The save file " + fileName
                            + " already exists, please try again in a while.");
                }
            }catch(IOException exception){
                JOptionPane.showMessageDialog(null, exception + ", file name:- " + fileName);
            }catch(Exception exception){
                JOptionPane.showMessageDialog(null, exception);
            }
       }

不幸的是,当我运行上述代码时,出现以下错误:

我找不到问题,请告诉我我做错了什么。

【问题讨论】:

  • 文件名中不能有斜杠 (/)
  • 我尝试使用new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");,但仍然遇到同样的错误。
  • @lordvlad 我现在试过了,它奏效了。 yyyy-MM-dd HH-mm-ss 格式有效。感谢您的帮助。
  • 认真的吗?我看不出错误消息怎么能比这更清楚?它几乎从字面上告诉你,你不能这样命名你的文件!
  • @Fildor 是的,我意识到现在答案很简单,但我仍然是编程和堆栈溢出的新手。请告诉我你是否认为这个问题应该被删除,因为它在未来对其他人没有用处。

标签: java file-writing


【解决方案1】:

猜测:要么

  1. 您的操作系统不允许在文件名中使用 / 字符
  2. 或者它认为 / 分隔目录;换句话说:您正在尝试在子目录中创建一个文件......可能不存在

不相关,但也很重要:你不应该混合这样的东西。您应该将创建和写入该文件的代码放入它自己的实用程序类中;而不是将其推送到您的 UI 相关代码中。

你看,如果你在这里创建了一个帮助类;对那个进行一些单元测试也会容易得多;以确保它执行您期望它执行的操作。

【讨论】:

  • 谢谢你告诉我这个,我把日期格式改成yyyy-MM-dd HH-mm-ss,程序就可以运行了。
  • @MoizMansoorAli 很高兴听到这个消息。如果是这样,请考虑接受我的回答(仍然可以,即使是封闭式问题)。
【解决方案2】:

文件系统对哪些字符可以进入文件名有限制。例如,正如@lordvlad 所说,斜杠用于分隔成功目录。此外,在 Windows 中,: 用于分隔驱动器名称(即 C:\...)。

【讨论】:

  • 是的,我完全忘记了编译器可能会将/: 符号误解为文件路径而不是文件名。感谢您的帮助。
  • 不是编译器。它是文件系统。所有这些都有规则允许文件名和路径的外观。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 2014-03-16
  • 2014-11-13
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
相关资源
最近更新 更多