字符“:”(冒号)作为文件名的一部分是不合法的.它将其解释为路径分隔符,因此当您仅请求文件名时,它将删除它以及它之前的所有内容.

这是检查文件名是否有效的一种方法:

对于有效的文件名,此函数将返回true;对于无效的文件名,将返回false:

private bool IsValidFilename(string filename)

{

//

//-- Get array with invalid chars for filenames

//

char[] illegalChars = Path.GetInvalidFileNameChars;

//

//-- Go through each char in filename and check if the char is

// in our array of invalid chars

//

foreach (char c in filename) {

if (illegalChars.Contains(c))

return false;

}

//

//-- All are valid, return true

//

return true;

}

如果以上函数返回false,则可以使用下一个函数格式化文件名并删除非法的字符(存在用于执行此IIRC的os函数,但这是手动进行的简单练习):

private string MakeFilenameValid(string filename, char replacment)

{

//

//-- Get array with invalid chars for filenames

//

char[] illegalChars = Path.GetInvalidFileNameChars;

StringBuilder validFilename = new StringBuilder();

//

//-- Go through each char in filename and check if the char is

// in our array of invalid chars. If it is, replace it

//

foreach (char c in filename) {

if (illegalChars.Contains(c)) {

validFilename.Append(replacment);

} else {

validFilename.Append(c);

}

}

//

//-- Return filename

//

return validFilename.ToString;

}

用法示例:

private void Button1_Click(System.Object sender, System.EventArgs e)

{

string filename = "abc:file.jpg";

if (!IsValidFilename(filename)) {

filename = MakeFilenameValid(filename, "_");

}

MessageBox.Show(filename);

}

在VB中:

Private Sub Button1_Click(sender As System.Object, _

e As System.EventArgs) Handles Button1.Click

Dim filename As String = "abc:file.jpg"

If Not IsValidFilename(filename) Then

filename = MakeFilenameValid(filename, "_")

End If

MessageBox.Show(filename)

End Sub

Private Function IsValidFilename(filename As String) As Boolean

'

'-- Get array with invalid chars for filenames

'

Dim illegalChars() As Char = Path.GetInvalidFileNameChars

'

'-- Go through each char in filename and check if the char is

' in our array of invalid chars

'

For Each c As Char In filename

If illegalChars.Contains(c) Then Return False

Next

'

'-- All are valid, return true

'

Return True

End Function

Private Function MakeFilenameValid(filename As String, replacment As Char) As String

'

'-- Get array with invalid chars for filenames

'

Dim illegalChars() As Char = Path.GetInvalidFileNameChars

Dim validFilename As New StringBuilder

'

'-- Go through each char in filename and check if the char is

' in our array of invalid chars. If it is, replace it

'

For Each c As Char In filename

If illegalChars.Contains(c) Then

validFilename.Append(replacment)

Else

validFilename.Append(c)

End If

Next

'

'-- Return filename

'

Return validFilename.ToString

End Function

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐