filesystems - XFS 文件系统中存在哪些非法字符?

标签 filesystems illegal-characters

有人可以提供(或给我指出一个列表)XFS 文件系统中的所有非法字符吗?我正在编写一个需要清理文件名的应用程序。

编辑:

好的,所以 POSIX 文件系统应该允许除 NUL 字符、正斜杠和“.”之外的所有字符和“..”文件名被保留。所有其他异常都是应用程序级别的。谢谢!

最佳答案

POSIX 文件系统(包括 XFS)允许文件名中的每个字符,但 NUL (0x00) 和正斜杠 (/; 0x2f) 除外。

  • NUL 标记 C 字符串的结尾;所以文件名中不允许使用它。
  • /是目录分隔符,所以不允许。
  • 以点开头的文件名 (.; 0x2e) 被视为隐藏文件。这是用户空间,而不是内核或文件系统约定。
  • 您可能遵循一些约定(例如 UTF-8 文件名),在这种情况下,会有很多很多的限制,包括使用哪种规范化形式。

现在,您可能还想禁止其他事情;带有各种奇怪字符的文件名处理起来毫无乐趣。我强烈建议使用白名单方法。

此外,处理文件名时,请注意每个目录中的 .. 条目。您不想遍历它并允许任意路径。

来源:Single Unix Spec v. 3, §3.169 ,“组成名称的字符可以从除斜杠字符和空字节之外的所有字符值集中选择。”

关于filesystems - XFS 文件系统中存在哪些非法字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/651677/

相关文章:

android - File.listFiles 不应该返回 null

android - 你如何格式化这个 URL,它给我 "Illegal character in path at index 70"?

c - 段错误: 11 & illegal character encoding in string literal

c# - 当其中一个包含非法字符时,如何获取 ZipArchive 的有效条目?

sql - 在 Hibernate SQL 查询中你如何转义?字段名称中的字符

python - ctime 总是 <= mtime 吗?

java - 如何使用VFSJFileChooser访问远程计算机目录

delphi - 如何查询 "Size on disk"文件信息?

c++ - 一种使用boost和c++列出目录和子目录下所有文件的方法

.net - 如何检查路径中的非法字符?