2013-03-05 5 views
0

Надеялся вы можете посмотреть на какой-то код для меня:Files.copy переименование файлов

public void Copy(Path sourcepath, 
     Path targetpath) throws IOException { 

    DateFormat dateFormat = new SimpleDateFormat("yyyymmdd"); 


    File origfile = targetpath.toFile(); // Changes targetpath to file 
    String name = origfile.getName(); // Gets the name of the file to be updated 
    File file1 = new File(targetpath.toString() + "." + dateFormat.format(Calendar.getInstance().getTime())); //Create a new file instance with the name of the old file + date 
    origfile.renameTo(file1); //Rename the original file 
    origfile.createNewFile(); //Backup the original file 
    Files.delete(targetpath); //Delete the original file 
    Files.copy(sourcepath, targetpath); 
} 

Теперь все работает, то резервное копирование работ и копировальные работы. Мое первоначальное намерение состояло в том, чтобы переименовать файл, скопированный в резервную копию файла. (Отсюда и название строка = origfile.getName();

Это был мой код:

File file2 = new File(name); 
File srcfile = sourcepath.toFile(); 
srcfile.renameTo(file2); 

Теперь, что работал до точки, через некоторое время я начал получать ошибки IOException, поэтому после нескольких . часов изо всех сил, я сдался и просто удалил, что переименование части

и вот он все еще переименовывает файл, когда копируется

Теперь мой вопрос:.. есть ли Files.copy сделать это есть ли какая-то таинственная вещь? Что происходит здесь? Это ТОЧНО, что я хочу, чтобы он делал, b ut Я сбитый с толку как ад. Почему мой код работает?

и да, я хочу знать, на случай, если он сломается или перестанет работать. Я не могу что-то работать и не знаю, почему!

EDIT:

К сожалению был в немного спешке при проводке, позвольте мне задать мой вопрос немного более ясным:

мое намерение было, что мой SourcePath переименован в исходное имя файла который подкрепляется. У меня был код для его переименования, но он исключил IOException, поэтому я удалил его. Я использовал только Files.Copy, поэтому я предположил, что sourcepath сохранит его исходное значение и просто скопирует для каждого экземпляра в цикле for, который у меня есть. Но нет, он отлично переименовывается в оригинал каждого резервного файла. Где и как?

+0

Я не понимаю, на что вопрос. –

+0

Я хочу знать, почему мои файлы переименовываются, когда нет кода для их указания. то есть, почему файл sourcepath переименовывается, когда он копируется (он делает то, что я хочу, чтобы он делал, я хочу, чтобы он был переименован, но мой код переименования не работал, поэтому я удалил его) –

+0

... Копирование файла не выполняет никакого «переименования», он копирует исходный файл в целевой файл. Вы передаете источник и цель. Вы копируете источник в цель. Вы переименовываете исходный файл и создаете CreateNewFile. Я все еще не понимаю, где такое замешательство. –

ответ

0

Понял это! Wooo!

Потому что я преобразовал TargetPath в файл, поддержал его и удалил это произошло:

, когда я использовал Files.copy (srcpath, TargetPath) srcpath принял имя TargetPath (в файл удаляется, но исходный путь по-прежнему существует, потому что с ним ничего не произошло)

Итак, в основном: два пути были отправлены на мой метод, мой метод создал резервный файл и удалил исходный файл (а не путь) исходного пути. (который был бы c: \ work \ testorigfile, например)

Таким образом, когда я использовал Files.copy (srcpath, targetpath), он работал точно так, как я этого хотел. Ответ БЫЛ в javadoc (в некотором смысле), так что спасибо за все советы парням!

Смежные вопросы