Vb.net 无法将文件移动到其他文件夹中

Vb.net 无法将文件移动到其他文件夹中,vb.net,Vb.net,我试图将少数XML文件的内容插入Oracle数据库,然后将文件移动到存档文件夹中,但移动步骤失败,出现错误: 进程无法访问该文件,因为其他进程正在使用该文件 代码如下: conn.Open() For Each oFile As String In Directory.GetFiles("D:\files") Dim cmd As New OracleCommand cmd.Connection = conn filename = New FileInfo(oFil

我试图将少数XML文件的内容插入Oracle数据库,然后将文件移动到存档文件夹中,但移动步骤失败,出现错误:

进程无法访问该文件,因为其他进程正在使用该文件

代码如下:

conn.Open()

For Each oFile As String In Directory.GetFiles("D:\files")

    Dim cmd As New OracleCommand
    cmd.Connection = conn

    filename = New FileInfo(oFile).Name

            ' integrarea de delivery notes
            XML_File = XmlReader.Create(oFile, New XmlReaderSettings())
            DataSet.ReadXml(XML_File)

            cmd.CommandText = "pkg_erp.insert_delnote"
            cmd.CommandType = CommandType.StoredProcedure

            cmd.Parameters.Add("p_delnote_id", OracleDbType.Int64).Direction = ParameterDirection.Input
            cmd.Parameters.Add("p_order_id", OracleDbType.Int64).Direction = ParameterDirection.Input
            cmd.Parameters.Add("p_product_id", OracleDbType.Int64).Direction = ParameterDirection.Input
            cmd.Parameters.Add("p_quantity", OracleDbType.Int64).Direction = ParameterDirection.Input
            cmd.Parameters.Add("p_confirm", OracleDbType.Int16).Direction = ParameterDirection.Output

            For i As Integer = 0 To DataSet.Tables(0).Rows.Count - 1

                cmd.Parameters("p_delnote_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(0))
                cmd.Parameters("p_order_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(1))
                cmd.Parameters("p_product_id").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(2))
                cmd.Parameters("p_quantity").Value = Convert.ToInt32(DataSet.Tables(0).Rows(i).Item(3))

                temp = cmd.ExecuteNonQuery()

                result = cmd.Parameters("p_confirm").Value.ToString()

                If result = "0" Then
                    file_waived = file_waived & New FileInfo(oFile).Name & Environment.NewLine
                Else
                    file_list = file_list & New FileInfo(oFile).Name & Environment.NewLine
                End If

            Next

            cmd.Parameters.Remove(cmd.Parameters.Add("p_delnote_id", OracleDbType.Int64))
            cmd.Parameters.Remove(cmd.Parameters.Add("p_order_id", OracleDbType.Int64))
            cmd.Parameters.Remove(cmd.Parameters.Add("p_product_id", OracleDbType.Int64))
            cmd.Parameters.Remove(cmd.Parameters.Add("p_quantity", OracleDbType.Int64))
            cmd.Parameters.Remove(cmd.Parameters.Add("p_confirm", OracleDbType.Int16))

            File.Move(oFile, "D:\archive_path_FullText\" & filename)


Next

conn.Close()
有人能告诉我如何使用“File.Move()”以避免出现上述错误消息吗


谢谢,

将这些行括在using语句中

' integrarea de delivery notes
Using XML_File = XmlReader.Create(oFile, New XmlReaderSettings())
    DataSet.ReadXml(XML_File)
End Using
这将确保XmlReader在文件上创建的锁在ReadXml方法完成后立即关闭并释放,从而将文件释放到其他位置

见MSDN

在处理文件和连接、命令、读卡器等一次性对象时,using语句非常重要。从您的代码来看,您似乎还需要了解如何修复这些对象的使用


此外,您还可以将命令和所有参数的创建移动到文件的循环之外,这样就不必手动删除它们并为下一个文件重新生成它们。最后,不要自行构建路径字符串,而是使用提供的路径。从System.IO命名空间中组合方法。

将这些行括在using语句中

' integrarea de delivery notes
Using XML_File = XmlReader.Create(oFile, New XmlReaderSettings())
    DataSet.ReadXml(XML_File)
End Using
这将确保XmlReader在文件上创建的锁在ReadXml方法完成后立即关闭并释放,从而将文件释放到其他位置

见MSDN

在处理文件和连接、命令、读卡器等一次性对象时,using语句非常重要。从您的代码来看,您似乎还需要了解如何修复这些对象的使用


此外,您还可以将命令和所有参数的创建移动到文件的循环之外,这样就不必手动删除它们并为下一个文件重新生成它们。最后,不要自行构建路径字符串,而是使用System.IO命名空间中提供的path.Combine方法。

D:\files文件夹可能包含多种文件类型。除送货单外,它还可以包含发票或acknw。为此,在找到文件类型后,我在循环中生成参数。当我使用时:
usingxml_file=XmlReader.Create(oFile,New XmlReaderSettings())DataSet.ReadXml(XML_file)结束时使用
它给我“Expression expected”当我使用
使用XML\u文件作为XmlReader=XmlReader.Create(oFile,New XmlReaderSettings())数据集。ReadXml(XML\u文件)结束使用
时,它使我感到“变量'XML\u File'将变量隐藏在封闭块中。”我做错了什么?您应该删除XML\u文件的声明。(将Xml_文件作为Xml_读取器设置为Dim Xml_文件“D:\files”文件夹可能包含多种文件类型。除了交货通知外,它还可以包含发票或acknw。为此,我在找到文件类型后在循环中生成参数。当我使用时:
using Xml_File=XmlReader.Create(oFile,New XmlReaderSettings())DataSet.ReadXml(XML_文件)End Using
当我使用
使用XML_文件作为XmlReader=XmlReader.Create(oFile,New XmlReaderSettings())DataSet.ReadXml(XML_文件)End Using
时,它为我提供了“预期的表达式”。变量“XML_文件”将变量隐藏在封闭块中我做错了什么?您应该删除XML_文件的声明。(将XML_文件作为XML_读取器进行Dim)