Вот мой код:
public static void create() {
String path = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + "\\JWPLfile";
int index = 0;
while (true) {
try {
File f = new File(path + index + ".html");
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write(fileContent);
break;
} catch (Exception e) {
index++;
}
}
}
Но вновь созданный файл HTML пуст, хотя fileContent — нет.
Вы закрыли выходной файл? Я не вижу доказательств в вашем коде, что вы сделали. Используйте попытку с ресурсами, чтобы автоматически закрыть его.
Я использую index, чтобы указать имя файла. Я думал, что если я не могу создать файл, то файл с таким именем уже существует, поэтому я пытаюсь увеличить его. Что еще я могу сделать с исключением, кроме как распечатать сообщение об исключении? @FedericoklezCulloca
Да, это было! Если вы напишете ответ, я выберу в качестве ответа. Спасибо @JimGarrison
Вы должны убедиться, что файл закрыт. Используйте попытку с ресурсами, как в:
File f = new File(path + index + ".html");
try (FileWriter fw = new FileWriter(f)) {
BufferedWriter bw = new BufferedWriter(fw);
bw.write(fileContent);
break;
} catch (Exception e) {
index++;
}
Обратите внимание, что (по сути) пустой блок catch
скроет от вас любые исключения. Не хорошая идея.
Кроме того, while(true)
и break
не нужны.
Как говорит ответ Джима, пустой блок catch - плохая идея. Вместо этого сначала проверьте, существует ли файл, и увеличивайте index
до тех пор, пока он не исчезнет:
int index = 0;
File f;
do {
f = new File(path + index++ + ".html");
} while (f.exists())
...
catch (Exception e) { index++;}
Разве вы не должны сделать что-то полезное с исключением вместо увеличения индекса, который вы даже не используете? Даже просто распечатать сообщение об исключении. Это может дать вам гораздо больше понимания проблемы.