Метод renameTo объекта Java File удаляет мой файл, а не переименовывает его.Vistax64 - PullRequest
3 голосов
/ 01 июня 2011

Попытка взять один mp3-файл и переименовать его, используя строковую переменную. Например, у меня есть папка классической музыки, C: / classic, и я хочу песню под названием vivaldi, переименованную в FourSeasons. Я хочу найти абсолютный путь к исходному файлу C: /classical/vivaldi.mp3, затем предоставить строку «FourSeasons.mp3» и изменить файл C: /classical/vivaldi.mp3 на C: / classic /FourSeasons.mp3.

Я думал об использовании renameTo и средства записи файлов, но ни один из них не дал мне желаемых результатов. Код RenameTo: возвращает false (ошибка переименования) и приводит к окончательному удалению моего файла.

public static void main(String[] args) {
File mp3 = new File("C:/mp3.mp3");
boolean renamestatus = mp3.renameTo(new File("song.mp3"));
System.out.println(renamestatus);
}

Я также пытался использовать FileReader и FileWriter, чтобы сделать точную копию файла с новым именем. Этот метод выводит mp3-файл, который пропускается и почти не похож на входной файл Это мой код fileWriter:

File inputFile = new File("C:/mp3.mp3");
File outputFile = new File("C:/song.mp3");
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = in.read()) != -1)
  out.write(c);
in.close();
out.close();

Ответы [ 5 ]

5 голосов
/ 04 декабря 2013

Я также столкнулся с той же проблемой,

Я решил ее, используя Абсолютный путь нового файлового объекта.

Так что в вашем случае:

boolean renamestatus = mp3.renameTo(new File("song.mp3"));

должно быть

boolean renamestatus = mp3.renameTo(new File("C://song.mp3"));

Во-вторых, без использования абсолютного пути ваш файл не удаляется, а перемещается в корневую папку вашего проекта с новым именем.

2 голосов
/ 01 июня 2011

При использовании renameTo вам нужно указать путь, по которому вы хотите перейти к файлу. Например, если вы используете исходный путь, это "C: /mp3.mp3", вы хотите, чтобы путь в renameTo выглядел как "C: /song.mp3". Таким образом, ваша строка будет выглядеть примерно так.

boolean renamestatus = mp3.renameTo(new File("C:/song.mp3"));

Надеюсь, что это полезно для вас.

1 голос
/ 01 июня 2011

FileReader и FileWriter предназначены для обработки текстовых данных * только 1005 * .

Ваши файлы MP3 являются двоичными данными и должны обрабатываться как таковые, поэтомувам нужно будет использовать FileInputStream и FileOutputStream для чтения / записи.

1 голос
/ 01 июня 2011

Попробуйте так:

mp3.renameTo(new File("C:/song.mp3"));

Вы также можете взглянуть на это и это ответы.

0 голосов
/ 09 февраля 2016

Оригинал не удаляется, Работает нормально, Просто укажите полный путь (Путь к исходному файлу + новое имя)

...