Java переименовывает файлы

#java

Вопрос:

У меня есть список файлов, и я хочу переименовать их по определенным правилам. Я написал этот код на java, он запускается, но не работает. Он не переименовывает файлы. Пожалуйста, помогите мне.

 import java.io.File;

public class ChangeName {

   public static void main(String[] args) {
       File cartella=new File("D:\LibriInformatica");
       File[] listaDiFile=cartella.listFiles();
       for (int i=0; i<listaDiFile.length;i  ){
           if(listaDiFile[i].isFile()){
               String[] titolo=listaDiFile[i].toString().split("\\");

               String[] nomeSplit2;

               //Regole di split e rinomino
               if(titolo[2].contains("( PDFDrive )")){//rinomino il file se contiene la parola ( PDFDrive eliminandola)
                   System.out.println("Nome file originale: " listaDiFile[i].toString());
                   String[] rinomino1= titolo[2].split("PDFDrive");
                   titolo[2]=rinomino1[0] ".pdf";
                   String nomeDefinitivo="D:\LibriInformatica" titolo[2];
                   listaDiFile[i].renameTo(new File(nomeDefinitivo));
                   System.out.println("Nome file cambiato: " listaDiFile[i].toString());
               }
               if(titolo[2].contains("_")){//Rinomino eliminando _
                   String[] rinomino1= titolo[2].split("_");
                   titolo[2]=rinomino1[0] ".pdf";
                   String nomeDefinitivo="D:\LibriInformatica" titolo[2];
                   listaDiFile[i].renameTo(new File(nomeDefinitivo));
               }
               if(titolo[2].contains("-")){//Rinomino eliminando -
                   String[] rinomino1= titolo[2].split("-");
                   titolo[2]=rinomino1[0] ".pdf";
                   String nomeDefinitivo="D:\LibriInformatica" titolo[2];
                   listaDiFile[i].renameTo(new File(nomeDefinitivo));
               }
           }
       }

   }
}
 

Комментарии:

1. Вы пробовали написать код для переименования одного файла?

2. Переименование вернет значение true, если оно работает, вы проверили значение, которое вы возвращаете? Возможно, добавьте строку для отладки if(!listaDiFile[i].renameTo(new File(nomeDefinitivo)){ System.out.println("couldn't rename " listaDiFile " to " nomeDefinitivo); } , чтобы вы могли видеть, выполняете ли вы правильные блоки кода и соответствуют ли имена ожидаемым.

3. мэтт у меня есть длинный список PDF-файлов в другом формате с именем.

4. В вашем примере недостаточно информации, чтобы кто-то мог помочь, вам нужно проверить, какие файлы вы пытаетесь переместить и каков возврат. Тем не менее, не имеет смысла использовать listaDiFile[i].toString().split("\\") его, когда у вас уже есть файл, которым вы можете управлять.

Ответ №1:

Я решил эту проблему. Переименованный файл должен быть сохранен в другой папке, так как система не переименовывает исходный файл. Это мгновенное решение. В будущем я буду искать что-то для оптимизации алгоритма

Комментарии:

1. Не похоже, чтобы вы пришли к правильному выводу. Вы просто сможете переименовать файл, если знаете исходное имя файла и выходное имя. Я бы предложил использовать более новый api, docs.oracle.com/javase/tutorial/essential/io/move.html