我试图创建一个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告诉我,该文件正在使用中。在创建和编辑文件之间。有什么想法吗?
答案 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}
答案 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.Start
和File.Delete
。