Есть такая функция:
// корректировать имена файлов
private void correctFileName(){
String fileName = file.getAbsolutePath();
String name = file.getName();
String newFileName = fileName.substring(0);
// проверка на наличие пробелов между исполнителем и названием
if(fileName.contains("-") && !fileName.contains(" - ")){
newFileName = fileName.substring(0, fileName.indexOf("-"));
newFileName += " - ";
newFileName += fileName.substring(fileName.indexOf("-")+1);
}
// проверка на -kissvk.com
if(newFileName.contains("-kissvk")){
int endIndex = newFileName.length() - 15;
newFileName = newFileName.substring(0, endIndex);
newFileName += ".mp3";
}
System.out.println(newFileName);
File result = new File(newFileName);
System.out.println(file.renameTo(result));
file = result;
}
Она работает, файл переименовывается. Теперь есть такая функция:
// корректировать имена файлов
private void correctFileName(){
String fileName = file.getAbsolutePath();
String name = file.getName();
String newFileName;
// Если песня из альбома
if(isAlbum){
newFileName = fileName.substring(0, fileName.length()-name.length());
newFileName += number;
newFileName += ". ";
newFileName += artist;
newFileName += " - ";
newFileName += songName;
newFileName += ".mp3";
}
else{
newFileName = fileName.substring(0, fileName.length()-name.length());
newFileName += artist;
newFileName += " - ";
newFileName += songName;
newFileName += ".mp3";
}
System.out.println(newFileName);
File result = new File(newFileName);
System.out.println(file.renameTo(result));
file = result;
}
Это методы класса, isAlbum, file - его поля. Второй метод не работает, фактического переименования нет, результат renameTo() - false. Что не так с ней? Почему первая работает, а вторая нет?
System.out.println(newFileName)
выдает одинаковый результат.
Это специфика самого renameTo
Renames the file denoted by this abstract pathname. Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.
Вам нужно проверять результат операции. И на существование уже этого файла в указанном пути, не говоря о платформе и прочие.
Существует альтернатива переименованию файла это перемещение.
пример взят из ответа.
String fileName = "MyFile.txt";
try {
Files.move(new File(fileName).toPath(), new File(fileName).toPath(), java.nio.file.StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ex) {
Logger.getLogger(SomeClass.class.getName()).log(Level.SEVERE, null, ex);
}
Я нашел корень зла. Я брал artist
, songName
из ID3v1, они в ANSI-кодировке. Функция не брала эти слова. Потом поменял на char, тоже не переименовывала. Заработала, когда передавал слова в String
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
подскажите либу чтобы можно было сделать кастомный скролл для ie11, вид скроллбара снизу
Я хочу сделать множественный фон (вода и рыба)Рыбе хочу задать определенное местоположение, например background-position: right center
Друзья, кажется, я обыскал весь интернет, но так и не нашёл, какие сейчас есть способы печати HTML документов в PyQt5 ?