@@ -1717,6 +1717,16 @@ RetryDir:
|
|||||||
Public Function RegexReplaceEach(Input As String, Replacement As MatchEvaluator, Regex As String, Optional options As RegexOptions = RegularExpressions.RegexOptions.None) As String
|
Public Function RegexReplaceEach(Input As String, Replacement As MatchEvaluator, Regex As String, Optional options As RegexOptions = RegularExpressions.RegexOptions.None) As String
|
||||||
Return RegularExpressions.Regex.Replace(Input, Regex, Replacement, options)
|
Return RegularExpressions.Regex.Replace(Input, Regex, Replacement, options)
|
||||||
End Function
|
End Function
|
||||||
|
''' <summary>
|
||||||
|
''' 检查传入字符串会不会引发 Issue #4505
|
||||||
|
''' </summary>
|
||||||
|
Public Function Ntfs83NameCheck(name As String) As Boolean
|
||||||
|
Dim regex As New Regex("(.*)~(\d*)")
|
||||||
|
Dim namePart As Byte() = Encoding.UTF8.GetBytes(regex.Match(name).Groups(1).Value)
|
||||||
|
Dim numPart As Integer = regex.Match(name).Groups(2).Value.Length
|
||||||
|
|
||||||
|
Return namePart.Length >= 6 AndAlso numPart = 1
|
||||||
|
End Function
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
|
|||||||
@@ -233,6 +233,8 @@ Public Class ValidateFolderName
|
|||||||
'检查特殊字符串
|
'检查特殊字符串
|
||||||
Dim InvalidStrCheck As String = New ValidateExceptSame({"CON", "PRN", "AUX", "CLOCK$", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}, "文件夹名不可为 %!", True).Validate(Str)
|
Dim InvalidStrCheck As String = New ValidateExceptSame({"CON", "PRN", "AUX", "CLOCK$", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}, "文件夹名不可为 %!", True).Validate(Str)
|
||||||
If Not InvalidStrCheck = "" Then Return InvalidStrCheck
|
If Not InvalidStrCheck = "" Then Return InvalidStrCheck
|
||||||
|
'检查 NTFS 8.3 (issue #4505)
|
||||||
|
If Ntfs83NameCheck(Str) Then Return "文件夹名不能是一个有效的 NTFS 8.3 文件名!"
|
||||||
'检查文件夹重名
|
'检查文件夹重名
|
||||||
Dim Arr As New List(Of String)
|
Dim Arr As New List(Of String)
|
||||||
If PathIgnore IsNot Nothing Then
|
If PathIgnore IsNot Nothing Then
|
||||||
@@ -286,6 +288,8 @@ Public Class ValidateFileName
|
|||||||
'检查特殊字符串
|
'检查特殊字符串
|
||||||
Dim InvalidStrCheck As String = New ValidateExceptSame({"CON", "PRN", "AUX", "CLOCK$", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}, "文件名不可为 %!", True).Validate(Str)
|
Dim InvalidStrCheck As String = New ValidateExceptSame({"CON", "PRN", "AUX", "CLOCK$", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}, "文件名不可为 %!", True).Validate(Str)
|
||||||
If Not InvalidStrCheck = "" Then Return InvalidStrCheck
|
If Not InvalidStrCheck = "" Then Return InvalidStrCheck
|
||||||
|
'检查 NTFS 8.3 (issue #4505)
|
||||||
|
If Ntfs83NameCheck(Str) Then Return "文件名不能是一个有效的 NTFS 8.3 文件名!"
|
||||||
'检查文件重名
|
'检查文件重名
|
||||||
If ParentFolder IsNot Nothing Then
|
If ParentFolder IsNot Nothing Then
|
||||||
Dim DirInfo As New DirectoryInfo(ParentFolder)
|
Dim DirInfo As New DirectoryInfo(ParentFolder)
|
||||||
@@ -351,6 +355,8 @@ Fin:
|
|||||||
'检查特殊字符串
|
'检查特殊字符串
|
||||||
Dim InvalidStrCheck As String = New ValidateExceptSame({"CON", "PRN", "AUX", "CLOCK$", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}, "文件夹名不可为 %!").Validate(SubStr)
|
Dim InvalidStrCheck As String = New ValidateExceptSame({"CON", "PRN", "AUX", "CLOCK$", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}, "文件夹名不可为 %!").Validate(SubStr)
|
||||||
If Not InvalidStrCheck = "" Then Return InvalidStrCheck
|
If Not InvalidStrCheck = "" Then Return InvalidStrCheck
|
||||||
|
'检查 NTFS 8.3 (issue #4505)
|
||||||
|
If Ntfs83NameCheck(Str) Then Return "文件夹名不能是一个有效的 NTFS 8.3 文件名!"
|
||||||
Next
|
Next
|
||||||
Return ""
|
Return ""
|
||||||
End Function
|
End Function
|
||||||
|
|||||||
Reference in New Issue
Block a user