擅长:python、mysql、java
<p>一本“综合指南”中禁止的文件名字符在Windows上不起作用,因为它保留文件名和字符。是的,像
<code>*</code><code>"</code><code>?</code>和其他名称是被禁止的,但是有无限多的名称只由被禁止的有效字符组成。例如,空格和圆点是有效的文件名字符,但禁止仅由这些字符组成的名称。</p>
<p>Windows不区分大写和小写字符,因此如果名为<code>a</code>的文件夹已经存在,则不能创建名为<code>A</code>的文件夹。更糟糕的是,像<code>PRN</code>和<code>CON</code>这样看似允许的名称,以及许多其他名称,都是保留的,是不允许的。Windows也有一些长度限制;如果将一个文件夹中有效的文件名移到另一个文件夹中,则该文件名可能无效。规则
<a href="https://msdn.microsoft.com/en-us/library/aa365247" rel="noreferrer">naming files and folders</a>
在MSDN上。</p>
<p>通常,不能使用用户生成的文本创建Windows目录名。如果要允许用户命名任何他们想要的名称,必须创建安全的名称,如<code>A</code>、<code>AB</code>、<code>A2</code>等,将用户生成的名称及其路径等价物存储在应用程序数据文件中,并在应用程序中执行路径映射。</p>
<p>如果绝对必须允许用户生成的文件夹名称,则判断它们是否无效的唯一方法是捕获异常并假定该名称无效。即使这样也充满了风险,因为为拒绝访问、脱机驱动器和驱动器空间不足抛出的异常与为无效名称抛出的异常重叠。你在打开一个巨大的伤疤。</p>