FileInfo.IsReadOnly против FileAttributes.ReadOnly

Есть ли разница между этими двумя способами проверки, доступен ли файл только для чтения?

Dim fi As New FileInfo("myfile.txt")

' getting it from FileInfo
Dim ro As Boolean = fi.IsReadOnly
' getting it from the attributes
Dim ro As Boolean = fi.Attributes.HasFlag(FileAttributes.ReadOnly)

Если нет, то почему есть две разные возможности?

1 ответ

Решение

Ну, в соответствии с исходным кодом.NET IsReadOnly Свойство просто проверяет атрибуты файла.

Вот конкретное свойство:

public bool IsReadOnly {
  get {
     return (Attributes & FileAttributes.ReadOnly) != 0;
  }
  set {
     if (value)
       Attributes |= FileAttributes.ReadOnly;
     else
       Attributes &= ~FileAttributes.ReadOnly;
     }
}

Это переводит на следующий код VB.Net

Public Property IsReadOnly() As Boolean
    Get
        Return (Attributes And FileAttributes.[ReadOnly]) <> 0
    End Get
    Set
        If value Then
            Attributes = Attributes Or FileAttributes.[ReadOnly]
        Else
            Attributes = Attributes And Not FileAttributes.[ReadOnly]
        End If
    End Set
End Property

Что касается того, почему существует несколько методов, это можно увидеть везде. Например, вы можете использовать StringBuilder.append("abc" & VbCrLf) или же StringBuilder.appendLine("abc")

Другие вопросы по тегам