Копирование и удаление файла оставляет файл нулевой длины в источнике - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь скопировать файл из одного каталога в другой. После копирования я хочу удалить исходный файл. Ожидаемый результат - исходный файл больше не существует, а целевой файл существует. Фактический результат заключается в том, что целевой файл существует и существует пустой исходный файл. Наблюдая за каталогом во время выполнения, исходный файл изначально исчезает, затем при выходе из программы он появляется снова с нулевой длиной.

Вот пример кода:

Imports System.IO
Module Module1
    Sub Main()
        Dim sourceFileName As String = "c:\TestDir\source\TestFile.txt"
        Dim destFileName As String = "c:\TestDir\destination\TestFile.txt"
        System.IO.File.Copy(sourceFileName, destFileName)
        System.IO.File.Delete(sourceFileName)
    End Sub
End Module

Если я удалю System.IO.Copy, файл нулевой длины не появится. Так что, похоже, что-то связано с комбинацией копирования и удаления.

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

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Применен ли атрибут Read-Only к вашему тестовому файлу? Если это так, вы можете попробовать что-то вроде этого:

File.Copy(sourceFileName, destFileName)
File.SetAttributes(sourceFileName, FileAttributes.Normal);
File.Delete(sourceFileName)

Есть ли причина, по которой вы не просто используете File.Move?

0 голосов
/ 31 августа 2018

Попробуйте использовать метод FileSystem.DeleteFile здесь: https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.fileio.filesystem.deletefile?view=netframework-4.7.2

Это должно полностью удалить файл.

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