Переименовать файл на другой в Java - PullRequest
2 голосов
/ 06 ноября 2008

У меня есть файл, который мне нужно переименовать в существующий файл. Это копирование, изменение, замена оригинальной операции над существующим файлом JAR. Я сделал первые два шага, мне просто нужна помощь с заменой оригинального бита. Какой лучший способ переименовать новую версию JAR в версию старой. Старый JAR не нуждается в сохранении, и я не хочу иметь копию нового с его первоначальным именем.

У меня уже есть обыкновенные lang и io, так что если есть метод, который я пропустил, это было бы здорово.

Ответы [ 5 ]

3 голосов
/ 06 ноября 2008

Java.io.File.renameTo(java.io.File)

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

2 голосов
/ 06 ноября 2008

Это должно вас разумно закрыть:

public boolean replaceOldJar(String originalJarPath, java.io.File newJar) {
    java.io.File originalJar = new java.io.File(originalJarPath);
    if (!originalJar.isFile()) {
        return false;
    }
    boolean deleteOldJarSucceeded = originalJar.delete();
    if (!deleteOldJarSucceeded) {
        return false;
    }
    newJar.renameTo(originalJar);
    return originalJar.exists();
}
2 голосов
/ 06 ноября 2008

Вам потребуется создать два java.io.File объекта: один для нового файла, другой для старого файла.

Позволяет называть эти oldFile и newFile.

oldFile.delete()
newFile.renameTo(oldFile);

Редактировать: ммсеры били меня в это.

1 голос
/ 06 ноября 2008

Я не совсем уверен, спрашиваете ли вы просто, как переименовать файл в файловой системе, или вы также хотите перезагрузить эту новую версию вашего фляги?

Часть переименования звучит просто ... просто используйте File.renameTo ... к сожалению, есть много проблем, связанных с платформой, связанных с этим. Некоторые платформы не позволяют перезаписывать существующий файл, другие не позволяют переименовывать файл, поэтому он меняет местоположение на другой раздел. Если вы хотите сделать процесс полностью безопасным, вам нужно сделать процесс самостоятельно, сначала удалив старый файл, а затем переименовав новый (или скопировав, если изменение раздела возможно). Это естественно склонно к проблемам, если ваше приложение / машина дает сбой при этом, поскольку это больше не атомарная операция. Таким образом, вам нужно будет добавить проверку в процесс запуска ваших приложений, которая ищет операции переименования, которые были в середине, когда произошел сбой. Если вы просто обновляете один файл таким образом, это должно быть довольно просто.

Однако, если вы действительно хотите перезагрузить банку, есть еще несколько вопросов, но вам нужно дать немного более подробное представление о ситуации, чтобы получить надлежащий совет о том, как это сделать.

1 голос
/ 06 ноября 2008

Есть ли проблема с удалением старого и переименованием нового?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...