Ваш код имеет как минимум две проблемы. Во-первых: у вас есть разделители путей в вашем имени файла (/
). Второе: по крайней мере под Windows ваше решение имеет недопустимые символы в имени файла (:
).
Чтобы избавиться от первой проблемы, вы можете пойти по двум маршрутам: a) создать все нужные вам папки или b) изменить разделители на что-то другое. Я объясню и то, и другое.
Чтобы создать все папки на пути, вы можете просто позвонить
Files.createDirectories(path.getParent());
где path
является файл (важно!). Вызывая getParent()
в файле, мы получаем папку, в которой находится path
. Files.createDirectories(...)
заботится обо всем остальном.
б) Измените разделители: Нет ничего проще, чем это:
String filename = "/Users/jchang/result_apache_log_parser_"
+ filename_date.replace("/", "_")
.replace(":", "_");
Это должно дать что-то вроде /User/jchang/result_apache_parser_2015_06_09_10_53_29
С б) мы позаботились о второй проблеме, а также.
Теперь давайте установить все это вместе и применить некоторые незначительные трюки из nio
:
String filename = "/Users/jchang/result_apache_log_parser_"
+ filename_date.replace('/', '_')
.replace(':', '_');
Path file = Paths.get(filename);
try {
// Create sub-directories, if needed.
Files.createDirectories(file.getParent());
// Create the file content.
byte[] fileContent = ...;
// We do not need to create the file manually, let NIO handle it.
Files.write(file
, fileContent
// Request permission to write the file
, StandardOpenOption.WRITE
// If the file exists, append new content
, StandardOpenOption.APPEND
// If the file does not exist, create it
, StandardOpenOption.CREATE);
} catch (IOException e) {
e.printStackTrace();
}
Для получения дополнительной информации о nio
клик here.
'Files.create (...)' создает только файл, а не папку. Может ли это быть вашей эмблемой или существует ли папка? – Turing85
О, ну что ж, мне нужен тип файла в конце? например .текст? – jstnchng
Нет, нет. Но должен присутствовать путь к файлу (т. Е. Папка, в которой находится файл). – Turing85