我创建一个类来存储的文件名。要做到这一点,我需要确切地知道哪些字符是无效的,到底哪些字符是无效的的前/后字符的。

Windows资源管理器修剪前缘和命名文件时自动尾随的空白字符,所以我需要构建一个文件名实例时修剪相同的字符。

我想过使用string.Trim(),但它是幼稚假设它修剪字符的默认的设置与无效领先恰好一致/后OS的文件名字符。

为string.Trim()文档说,它修剪以下字符默认: U + 0009 U + 000A,U + 000B,U + 000C,U + 000D,U + 0020,U + 0085,U + 00A0,U + 1680,U + 2000,U + 2001,U + 2002,U + 2003,U + 2004年,U + 2005,U + 2006年,U + 2007,U + 2008,U + 2009年,U + 200A,U + 200B,U + 2028,U + 2029,U + 3000,U + FEFF

不幸的是,一些上述的字符不是在文件无效,因为它们不是由System.IO.Path.GetInvalidFileNameChars返回的字符集。

<强>我是否正确,然后该string.Trim()可能潜在地除去VALID领先/从一个文件名后的字符,因此破坏的文件名吗

究竟是什么无效的前/后的字符在Windows Vista操作系统的文件名?据我所知,他们不一定相同,文件系统本身,因为操作系统可以在不同的运行文件系统。

有帮助吗?

解决方案

  

我是否正确,然后该string.Trim()   可能会删除有效   从一个前/后的字符   文件名,因此破坏   文件名?

是。更是这样一个类UNIX系统,其中“X”是从一个有效的文件名和不同的上的“x”

其他提示

文件名可以就在空间/端。修剪将它们消除。

文件名不能包含

/ \ : * ? " | < >

此代码运行,并创建该文件:

Imports System.IO
Module Module1

Sub Main()
    Dim fs As New FileStream("d:\temp\   file . foo ", FileMode.Create, _
       FileAccess.Write)
    'declaring a FileStream and creating a word document file named file with
    'access mode of writing
    Dim s As New StreamWriter(fs)
    'creating a new StreamWriter and passing the filestream object fs as argument
    s.BaseStream.Seek(0, SeekOrigin.End)
    'the seek method is used to move the cursor to next position to avoid text to be
    'overwritten
    s.WriteLine("This is an example of using file handling concepts in VB .NET.")
    s.WriteLine("This concept is interesting.")
    'writing text to the newly created file
    s.Close()
End Sub

End Module

请注意:与上面的代码中创建的文件的实际名称显示为“文件foo”。如果我在资源管理器修改的文件名中的空间是不存在,但是当我重新运行上面的代码,它取代该文件。

注:我把代码从 http://www.startvbdotnet.com/files/ Default.aspx的和加入的空间

请注意:我注意到,Vista的资源管理器中重命名不会让你前或后的文件名添加的空间,这样就可以使“富TXT”,而不是“foo.txt的”使用方法

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top