【问题标题】:Open a text file with vb.net , and if it exists delete that file使用 vb.net 打开一个文本文件,如果存在则删除该文件
【发布时间】:2012-07-16 06:29:51
【问题描述】:

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

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  

【问题讨论】:

  • 你的 else 块在做什么?试图运行已删除/不存在的文件?
  • 代码没有意义,因为如果文件不存在,您将尝试执行该文件。此外,请注意,您无法可靠地测试文件是否存在,这从根本上是不可能的,因为文件系统不会为您提供对该文件的独占访问权限(在 Unix 上这显然是可能的)

标签: vb.net file-io vb.net-2010


【解决方案1】:

除了 Konrad 关于尝试执行您刚刚检查的文件不存在的观点:

1) 将变量命名为 file 不是一个好主意,因为它可能会与 System.IO.File 混淆。

2) 它是 File.Delete,而不是 file.Remove - 您正在调用 String.Remove 方法,因为 file 是一个字符串。您应该使用 Option Strict On,因为它会为您捕捉到该错误。

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)

【讨论】:

  • 无法在 d:\ 下打开记事本。上面的代码用无标题的名字打开记事本。
  • @sudha.s 我不知道您的评论是在将我的回复标记为答案之前还是之后添加的,但是当我使用Dim fyle As String = "D:\test.txt" 时,它会按预期工作,即它会打开我的文本编辑器使用文件 test.txt。
  • 您是否知道如何在 Windows 7 上执行此操作,以及如何实际获得权限?
  • @deltu100 您的问题确实应该是一个新线程,但是您当然会先进行搜索并找到类似stackoverflow.com/questions/7351429/…的内容
猜你喜欢
  • 1970-01-01
  • 2013-04-16
  • 2017-07-22
  • 1970-01-01
  • 2015-02-04
  • 2019-08-02
  • 2015-10-31
  • 2016-03-01
  • 1970-01-01
相关资源
最近更新 更多