无法连接 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
不要使用 Date
和 SimpleDateFormat
。那些 类 有设计问题。根据我的经验,尤其是后者通常很麻烦。 类 也早就过时了。 java.time,现代的 Java 日期和时间 API,更易于使用。
Link: Oracle tutorial: Date Time 解释如何使用 java.time
.
我在连接日期和文件名以创建新目录时遇到问题。
如果我 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
不要使用 Date
和 SimpleDateFormat
。那些 类 有设计问题。根据我的经验,尤其是后者通常很麻烦。 类 也早就过时了。 java.time,现代的 Java 日期和时间 API,更易于使用。
Link: Oracle tutorial: Date Time 解释如何使用 java.time
.