Как выглядит файл назначения после того, как сетевое соединение обрывается во время записи в него?Это важно знать, так как ваша стратегия восстановления обязательно зависит от этого.
Я подозреваю, что, вероятно, произойдет, что целевой файл будет очищен до 0 байтов.Если это произойдет, к сожалению, вы не сможете возобновить процесс копирования, потому что уже скопированные данные исчезли.Все, что вы можете сделать сейчас, - это создать экземпляры потоков и перезапустить копию с нуля.Для больших файлов это может означать, что он может никогда не завершиться, если постоянно происходит сбой сети.
Однако, если файл назначения успешно записан даже в случае сбоя сети, вы можете использоватьFile.Append()
для повторного открытия файла и продолжения процесса копирования.Затем вы должны использовать inputFile.Position = outputFile.Position
, чтобы чтение и запись снова синхронизировались.
Если сетевое подключение к файлу input не удается (то, из которого вы читаете), простоповторно откройте его с помощью File.Open()
и снова установите inputFile.Position = outputFile.Position
.
Все вышеперечисленное предполагает, что вы должны использовать Stream
для чтения данных как байт , что, кажется,Мне более уместен подход, чем тот, который вы опубликовали, когда вы читаете символов с использованием StreamReader
(что предполагает, что вводом является текст файл).