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")