如何在VB中创建可写文件?

时间:2009-04-15 07:43:54

标签: vb6 permissions

我正在寻找测试文件是否可写的最简单方法,以及它是否为只读以更改其访问权限以使其可写。

欢迎任何有正确方向的建议或指示!

3 个答案:

答案 0 :(得分:3)

文件可能无法写入的原因有很多,例如:

  • 它是写保护的
  • 它位于只读媒体(例如CD-ROM)
  • 用于运行代码的用户帐户没有对文件的写访问权
  • 该文件位于不允许写入的文件共享上

您可以检查其中的一些,但唯一可以测试的方法是实际尝试打开文件进行编写。

您可以使用GetAttrSetAttr函数查找并更改只读标记。

文件无法写入的某些原因根本无法修复(如CD-ROM上的文件),或者无法从程序中修复。如果用户帐户没有对该文件的写入权限,则它不太可能有权更改权限...

答案 1 :(得分:3)

使用GetAttr和SetAttr

Dim attributes As VbFileAttribute

attributes = GetAttr("C:\foo.txt")
If (attributes And vbReadOnly) Then
  attributes = attributes - vbReadOnly
  SetAttr "C:\foo.txt", attributes
End If

使用FileSystemObject (需要对Microsoft Scripting Runtime的项目引用)

Dim fso As New FileSystemObject
Dim fil As File

Set fil = fso.GetFile("C:\foo.txt")
If (fil.attributes And ReadOnly) Then
  fil.attributes = fil.attributes - ReadOnly
End If

答案 2 :(得分:-1)

'Getting and Setting File Attributes

Declare Function SetFileAttributes Lib "kernel32" _
 Alias "SetFileAttributesA" (ByVal lpFileName As _
 String, ByVal dwFileAttributes As Long) As Long
Declare Function GetFileAttributes Lib "kernel32" _
 Alias "GetFileAttributesA" (ByVal lpFileName As _
 String) As Long

Public Function GetAttributes(Filename As String, _
 Archive As Boolean, Hidden As Boolean, _
 ReadOnly As Boolean, System As Boolean)

    'Dimension and setup some variables.
    Dim Data As Long
    Archive = False: Hidden = False: ReadOnly = False

    'Get Data and check for success.
    Data = GetFileAttributes(Filename)
    If Data = 0 Then GetAttributes = 0 Else GetAttributes = 1

    'Work out what it is.
    If Data = 128 Then Exit Function
    If Data - 32 >= 0 Then Archive = True: Data = Data - 32
    If Data - 4 >= 0 Then System = True: Data = Data - 4
    If Data - 2 >= 0 Then Hidden = True: Data = Data - 2
    If Data - 1 >= 0 Then ReadOnly = True: Data = Data - 1

End Function

Public Function SetAttributes(Filename As String, _
Archive As Boolean, Hidden As Boolean, _
ReadOnly As Boolean, System As Boolean)

    'Dimension a Variable.
    Dim Data As Long

    'Work out what Data should be.
    Data = 0
    If Archive = True Then Data = Data + 32
    If Hidden = True Then Data = Data + 2
    If ReadOnly = True Then Data = Data + 1
    If System = True Then Data = Data + 4
    If Data = 0 Then Data = 128

    'Set the attributes and check for success.
    SetAttributes = SetFileAttributes(Filename, Data)

End Function