Как определить, находятся ли два файла на одном «томе»? - PullRequest
2 голосов
/ 29 ноября 2008

Я пытаюсь использовать System.IO.File.Replace для обновления файла, и выдается System.IOException, если файл назначения находится на NAS.

Согласно MSDN , если файл назначения находится на другом томе, этот метод выдает исключение. Это правильно, но как мне определить, находятся ли два файла на «разных томах»?

Path.GetPathRoot возвращает разные строки, если я указываю один и тот же файл, используя буквы дисков, сопоставленные диски или пути UNC. Я не могу поймать System.IOException, потому что это происходит в разных случаях, а не только, если файлы находятся на разных томах.

Ответы [ 2 ]

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

Вы можете убедиться, что замена всегда на том же томе, используя Копировать, затем Заменить. Или просто поймайте ошибку и попробуйте.

catch IOException
  File.Copy( src,dest+".tmp", true )
 File.Replace( dest+".tmp", dest, dest_backup )
0 голосов
/ 29 ноября 2008

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

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