无法连接 mkdir() JavaFX 的日期和文件名

Cannot concatenate Date and file name for mkdir() JavaFX

我在连接日期和文件名以创建新目录时遇到问题。

如果我 PATH.concat(电影) 它会创建一个目录,但如果我连接名称(电影名称和日期)"It says created!" 但它不会创建任何目录。

  FileChooser fileChooser = new FileChooser();

    FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("Select a File ('.mp4')", "*.mp4");
            fileChooser.getExtensionFilters().add(filter);
            File file = fileChooser.showOpenDialog(null);
            String movie = file.getName();
            filePath = file.toURI().toString();

            String s;
            Format formatter;
            Date date = new Date();

            formatter = new SimpleDateFormat("MM/dd/YYYY");
            s = formatter.format(date);

            String PATH = "C:\FINALDATA\";
            String name = movie+"("+s+")";

            String folderName = PATH.concat(name);

    File fileName = new File(folderName);       

    if(!fileName.exists()){
        boolean result = fileName.mkdir();
                    System.out.print("Created!");
            }else{
                System.out.print("Error!");
            }

您的日期格式导致了这里的问题。您不能创建包含 '/' 的文件夹或文件名。我认为你最好将日期格式更改为 MM-dd-yyyy 并尝试。

java.time

    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("MM-dd-uuuu");
    String s = LocalDate.now(ZoneId.of("Europe/Bratislava")).format(dateFormatter);

这会给你一个字符串 s like

12-09-2018

正如 UVM 已经说过的,正斜杠 / 是 Windows 文件名中的禁止字符(在其他常见操作系统上也是如此,反斜杠 \ 和冒号 :)。

您可能想更进一步,为您的日期使用 ISO 8601 格式。然后按字母顺序排序也是按时间顺序。

    String s = LocalDate.now(ZoneId.of("Europe/Bratislava")).toString();

2018-12-09

不要使用 DateSimpleDateFormat。那些 类 有设计问题。根据我的经验,尤其是后者通常很麻烦。 类 也早就过时了。 java.time,现代的 Java 日期和时间 API,更易于使用。

Link: Oracle tutorial: Date Time 解释如何使用 java.time.