# windows 文件命名规则

# 1. 介绍

windows 上文件名称,命名规则

# 2. 规则

# 2.1. 避免使用特殊字符

< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)

# 2.2. 限制文件名长度

Windows 的全路径名(包括文件夹和文件名)的最大长度为260个字符。

虽然新版本的 Windows 已经支持更长的路径,但是为了保证向后兼容性,建议还是尽量遵守这个规则。

# 2.3. 避免使用预留名称

例如:

CON
PRN
AUX
NUL

COM1
COM2
COM3
COM4
COM5
COM6
COM7
COM8
COM9

LPT1
LPT2
LPT3
LPT4
LPT5
LPT6
LPT7
LPT8
LPT9

# 3. 正则

export class FileNameUtil {
  // forbidden characters \ / : * ? " < > |
  static forbiddenCharactersRegex = /[\\/:*?"<>|]/;

  // cannot start with dot (.)
  static startWithDotRegex = /^\./;

  // forbidden file names
  static forbiddenFileNames = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\.|$)/i;

  static isValid(fileName: string) {
    let success = true;
    let message = '';

    if (this.forbiddenCharactersRegex.test(fileName)) {
      success = false;
    }

    if (this.startWithDotRegex.test(fileName)) {
      success = false;
    }

    if (this.forbiddenFileNames.test(fileName)) {
      success = false;
    }

    return { success, message };
  }
}

# 4. 参考

本章目录