2012-07-16 147 views
0

我正在使用vb.net编写windows应用程序的代码。我想在c:\下打开一个文本文件。如果文件已经存在,我想删除该文件。用vb.net打开一个文本文件,如果它存在删除该文件

my code 
------- 
Dim file As String = "C:\test.txt" 
    If System.IO.File.Exists(file) Then 
     file.Remove(file) 
    Else 

     System.Diagnostics.Process.Start(file) 

    End If 

当我尝试打开该文件时出现以下错误。

error 
----- 
The system cannot find the file specified 
+1

你有什么别的块在做什么?试图运行已删除/不存在的文件? – roymustang86 2012-07-16 18:35:30

+1

代码没有意义,因为如果它不存在,则尝试执行该文件。此外,请注意,你**不能**可靠地测试文件的存在,这是根本不可能的,因为文件系统不给你独占访问文件(在Unix上这显然是可能的) – 2012-07-16 18:46:56

回答

2

除了康拉德的约试图执行您刚才检查不存在的文件,点:

1)这不是一个好主意来命名变量file,因为它可能会混淆系统。 IO.File。

2)它是File.Delete,而不是file.Remove - 你调用String.Remove方法,因为file是一个字符串。您应该使用选项严格在,因为它会为您捕获该错误。

3)在Windows Vista和更高版本中,您可能没有对C:的写入/删除访问权限。

假设你已经到目录C写访问:\ TEMP然后这个工程:

Dim fyle As String = "C:\temp\test.txt" 

If System.IO.File.Exists(fyle) Then 
    IO.File.Delete(fyle) 
End If 

IO.File.Create(fyle) 
System.Diagnostics.Process.Start(fyle) 
+0

我无法打开记事本在d:\下。上面的编码以未加注的名称打开记事本。 – vps 2012-07-17 04:59:49

+0

@ sudha.s我不知道你的评论是在标记我的答案作为答案之前还是之后添加的,但是当我使用Dim fyle As String =“D:\ test.txt”时,它按预期工作,即它会用文件test.txt打开我的文本编辑器。 – 2012-07-17 17:26:30

+0

你可能知道如何做到这一点的Windows 7,以及如何实际获得承认? – deltu100 2012-11-15 12:37:45