#java
Вопрос:
Когда я выполняю приведенный ниже код, он перезаписывает существующий файл. Я тоже хочу сохранить старый файл и новый файл. Что здесь можно сделать? Можем ли мы переименовать его как Test(1).xlsx, Test(2).xlsx, Test(3).xlsx, как шаблон Windows?
File excel = new File("C:\TEST\Test.xlsx");
try (FileInputStream fis = new FileInputStream(excel);
XSSFWorkbook book = new XSSFWorkbook(fis);) {
..
..
..
try (FileOutputStream outputStream = new FileOutputStream("C:\TEST\Output\Test.xlsx")) {
book.write(outputStream);
}
}
Комментарии:
1. В этом случае вам нужно создать файл перед записью, сохранить его и позже записать. Я пытаюсь вспомнить, есть ли в этой библиотеке что-то для автоматического выполнения этого, но я не уверен.
Ответ №1:
Вы можете проверить, существует ли файл уже с помощью этого exists()
метода, прежде чем начать запись в него. Если файл уже существует, запишите его в другой файл.
File excel = new File(determineFileName());
try (FileInputStream fis = new FileInputStream(excel);
XSSFWorkbook book = new XSSFWorkbook(fis);) {
...
}
с
private String determineFileName(){
String path = "C:\TEST\Test.xlsx";
int counter = 0;
while(new File(path).exists()){
counter ;
path = "C:\TEST\Test(" counter ").xlsx";
}
return path;
}
Комментарии:
1. Спасибо за быстрый ответ! Реализовано таким образом, и оно работает так, как ожидалось.