创建并写入文件>开始申请>在VB.NET中删除文件

时间:2016-03-26 13:02:57

标签: vb.net

我试图创建一个VB.NET应用程序,它将多行文本写入文本文件,然后启动一个应用程序,在应用程序启动后删除文本文件。

我怎么能意识到这一点?

-

编辑:

我现在有了这段代码:

    Dim iniFile As String = Application.StartupPath + "\settings.ini"

    If System.IO.File.Exists(iniFile) = True Then
        File.Delete(iniFile)
    End If

    If System.IO.File.Exists(iniFile) = False Then
        File.Create(iniFile)
    End If

    Dim fileStr As String() = {"line1", "line2", "line3"}
    File.WriteAllLines(iniFile, fileStr)

    Dim p As Process = Process.Start(Application.StartupPath + "\app.exe")
    p.WaitForInputIdle()

    If System.IO.File.Exists(iniFile) = True Then
        File.Delete(iniFile)
    End If

我遇到的唯一问题是VS告诉我,该文件正在使用中。在创建和编辑文件之间。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您的代码正在启动应用程序,然后直接移动以删除ini文件。

在继续删除ini文件之前,您需要等待进程先退出

E.g

{code to create ini file}

'Start the process.
Dim p As Process = Process.Start(Application.StartupPath + "\app.exe")
'Wait for the process window to complete loading.
p.WaitForInputIdle()
'Wait for the process to exit.
p.WaitForExit()

{code to delete ini file}

此处的完整示例:https://support.microsoft.com/en-us/kb/305368

答案 1 :(得分:0)

只需使用File.WriteAllText
注意:正如其他人已经提到的那样,您应该查看上一个True

中的If
If System.IO.File.Exists(Application.StartupPath + "\settings.ini") = False Then
    File.Create(Application.StartupPath + "\settings.ini")
End If

Dim fileStr As String() = {"line1", "line2", "line3"}
System.IO.File.WriteAllText(Application.StartupPath + "\settings.ini", [String].Join(Environment.NewLine, fileStr))

Process.Start(Application.StartupPath + "\app.exe")

If System.IO.File.Exists(Application.StartupPath + "\settings.ini") = True Then
    File.Delete(Application.StartupPath + "\settings.ini")
End If

答案 2 :(得分:0)

使用File.WriteAllLines,因为它

  

创建一个新文件,将指定的字符串数组写入该文件,然后关闭该文件。 [...]如果目标文件已存在,则会被覆盖。   msdn

另外,您应该使用Path.Combine来设置path

Dim path as String = Path.Combine(Application.StartupPath, "settings.ini")
Dim fileStr As String() = {"line1", "line2", "line3"}
File.WriteAllLines(path, fileStr)

同时使用Path.Combine Process.StartFile.Delete