Исключение системного ввода - вывода для MOVEFILE-файла, используемого другим процессом
Я тестирую новое приложение Visual Basic 2017, которое позволит пользователям выбирать файл из
каталог для обработки. После обработки приложение предназначено для перемещения файла в
резервный каталог.
Это работает для первого файла просто отлично, но на втором файле я получаю:
System.IO.IOException: 'процесс не может получить доступ к файлу
'J:\WindowsInvoices\Data\37_20180601_767437.CSV-потому что его использует кто-то другой.
процесс.'
Я пробовал и то, и другое: а) мой компьютер.Файловая Система.MoveFile(DataFullPath, BKPDataFullPath,
OverwriteBKP)
и Б) Мой компьютер.файловая система.CopyFile(DataFullPath, BKPDataFullPath, OverwriteBKP)
Мой.Компьютер.файловая система.Это(DataFullPath)
В варианте B исключение возникает при выполнении команды DeleteFile.
Есть предложения?
Что я уже пробовал:
Более подробная информация, после комментариев и ответа: я должен предоставить больше информации. Это приложение считывает файл (csv) и печатает его в соответствии с набором контрольных записей. Он не записывает никаких файлов. Ниже приведен весь раздел кода, который испытывает ошибку. Как вы можете видеть, в своем текущем состоянии он просто открывает и (пытается) закрыть файл. Исключение составляется на уровне .это
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click OpenFileDialog1.DefaultExt = ".CSV" OpenFileDialog1.AddExtension = True OpenFileDialog1.Filter = "Comma Separated Values | *.csv" OpenFileDialog1.InitialDirectory = Base_Mapped_Path & "Data" OpenFileDialog1.ReadOnlyChecked = True If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then OpenFileDialog1.ReadOnlyChecked = True OpenFileDialog1.OpenFile() DataFullPath = OpenFileDialog1.FileName BKPDataFullPath = DataFullPath.Replace("Data", "Backup") ' load print data file into its work array 'LoadDataArray() Dim OverwriteBKP As Boolean = True My.Computer.FileSystem.CopyFile(DataFullPath, BKPDataFullPath, OverwriteBKP) My.Computer.FileSystem.DeleteFile(DataFullPath) OpenFileDialog1.Dispose() End If End Sub
ZurdoDev
Я бы посоветовал выяснить, что имеет замок на нем. Скорее всего, это ваш код, который означает, что вам нужно закрыть указатель файла, но поскольку мы не можем видеть ваш код, я не знаю, что еще вам сказать.
CHill60
Вы проверяли, есть ли у кого-нибудь из ваших пользователей открытый файл в Excel? Вот что обычно здесь происходит.
Даже если они говорят, что закрыли его, проверьте, что они полностью закрыли Excel, и спросите их, когда они в последний раз перезагружали свой компьютер.