在vb中创建文件夹的问题

时间:2014-11-04 16:13:26

标签: vb.net

我无法在驱动器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

我该怎么办?

1 个答案:

答案 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:驱动器的根目录。写入隔离存储,系统的临时文件夹,或用户的应用程序数据文件夹,或其他任何可能更容易访问的文件夹,都是首选。