Переименуйте файл, если он существует, вместо его перезаписи

#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. Спасибо за быстрый ответ! Реализовано таким образом, и оно работает так, как ожидалось.