我无法在驱动器C中创建一个文件夹:使用VB.NET。它说"访问被拒绝"。我尝试了很多方法,但它没有用。我试过使用这段代码:
If my.Computer.FileSystem.DirectoryExists("C:\log.txt") Then
Using writer As System.IO.TextWriter = System.IO.File.CreateText("C:\log.txt")
writer.WriteLine(Me.Top & vbCrLf & "'top")
writer.WriteLine(Me.Left & vbCrLf & "'lrft") ''sa scriu
writer.WriteLine(Me.Width & vbCrLf & "'width")
writer.WriteLine(Me.Height & vbCrLf & "'height")
End Using
Else
Directory.CreateDirectory("C:\log.txt")
Using writer As System.IO.TextWriter = System.IO.File.CreateText("C:\log.txt")
writer.WriteLine(100 & vbCrLf)
writer.WriteLine(100 & vbCrLf) ''sa scriu
writer.WriteLine(100 & vbCrLf)
writer.WriteLine(100 & vbCrLf)
End Using
End If
我该怎么办?
答案 0 :(得分:3)
问题似乎是您将目录(即文件夹)的概念与文件的概念混合在一起。首先,检查是否存在名为 log.txt 的文件夹。如果确实存在,则尝试在同一位置使用相同名称创建新文件。相反,如果 log.txt 文件夹不存在,则创建该文件夹,然后尝试在同一位置使用相同名称创建文件。无论哪种方式,它总是会失败。如果在同一位置已存在同名文件夹,则无法创建名为 log.txt 的文件。
我怀疑你打算在尝试在该文件夹中创建文件之前检查文件夹C:\是否存在。例如,像这样:
If My.Computer.FileSystem.DirectoryExists("C:\") Then
Using writer As System.IO.TextWriter = System.IO.File.CreateText("C:\log.txt")
' ...
End Using
Else
Directory.CreateDirectory("C:\")
Using writer As System.IO.TextWriter = System.IO.File.CreateText("C:\log.txt")
' ...
End Using
End If
这肯定会更合乎逻辑,但是,在这种特殊情况下,它有点傻,因为C:\是驱动器的根文件夹,因此它将始终存在(除非驱动器卷不存在,无论如何,创建文件夹的情况都会失败。)
正如Plutonix在上面的评论中指出的那样,即使这对你有用,但这仍然是不好的做法。很可能,如果不可能,用户将无法访问C:驱动器的根目录。写入隔离存储,系统的临时文件夹,或用户的应用程序数据文件夹,或其他任何可能更容易访问的文件夹,都是首选。