У меня есть 500 файлов PDF в каталоге. Я хочу удалить сначала пять символов имени файла и переименовать его.
Используйте File.listFiles (. ..)
для вывода списка файлов в каталоге, String.substring (...)
для формирования новых имен файлов и File.rename (...)
сделать переименование.
Но я предлагаю, чтобы ваше приложение проверило, может ли ваше приложение переименовать все файлы без каких-либо конфликтов , прежде чем вы начнете переименование .
Но комментарий @Pascal уместен. Java - не самый простой инструмент для этого.
Java - плохой выбор для такого рода работы. Намного лучшим выбором был бы язык сценариев JVM, например Groovy. Если вы хотите использовать этот вариант
Шаг 1:
Загрузите и установите Groovy
Шаг 2:
Запустите Groovy-консоль
Шаг 3:
Запустите этот сценарий
def dirName = "/path/to/pdf/dir"
new File(dirName).eachFile() { file ->
def newName = file.getName()[5..-1]
File renamedFile = new File(dirName + "/" + newName)
file.renameTo(renamedFile)
println file.getName() + " -> " + renamedFile.getName()
}
I ' m предполагая, что все файлы находятся в каталоге / path / to / pdf / dir
. Если некоторые из них находятся в подкаталогах этого каталога, используйте File.eachFileRecurse
вместо File.eachFile
.
Пример кода для переименования списка файлов в заданном каталоге. В приведенном ниже примере c: \ Projects \ sample
- это папка, файлы, перечисленные в ней, были переименованы в 0.txt, 1.txt, 2.txt и т. Д.
I надеюсь, это решит вашу проблему
import java.io.File;
import java.io.IOException;
public class FileOps {
public static void main(String[] argv) throws IOException {
File folder = new File("\\Projects\\sample");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
File f = new File("c:\\Projects\\sample\\"+listOfFiles[i].getName());
f.renameTo(new File("c:\\Projects\\sample\\"+i+".txt"));
}
}
System.out.println("conversion is done");
}
}
Если вы работаете в Windows, вам следует использовать командную строку или файл .bat. Windows поддерживает переименования с использованием подстановочных знаков на уровне ОС, так что это будет на порядки быстрее, чем Java, которой приходится перебирать все имена и выдавать вызовы переименования для каждого из них.