【问题标题】:C# to convert any string to a safe cross-platform file name?C# 将任何字符串转换为安全的跨平台文件名?
【发布时间】:2014-08-27 20:24:39
【问题描述】:

给定任何 .NET 字符串,在任何操作系统上将其转换为安全文件名的 C# 算法是什么? Windows、iOS、Android、Linux?目标是尽可能多地保留原始字符串,同时使其在任何平台上都可以安全地用作文件名。

【问题讨论】:

  • Base36 可能运行良好。你不会想假设你的文件系统是区分大小写的。
  • 您还需要考虑文件名长度,因为它因系统而异。
  • 我不知道您可以使用任何内置方法。我自己生成了从 Windows 到 Linux 的检查。
  • 你对转换有什么限制吗?像“应该类似于原始字符串”或“与原始字符串的一对一映射”或长度或字符集限制?在非常通用的情况下,转换与创建新的 guid 一样有用...就像将 10K 长的中文字符串转换为纯 ASCII ...
  • 是的,我们的目标是尽可能保留原始字符串,同时使其在任何平台上都可以安全地用作文件名。

标签: c# ios xamarin cross-platform


【解决方案1】:

尝试使用 System.IO.Path 类中的 GetInvalidFileNameChars() 方法。

System.IO.Path.GetInvalidFileNameChars()

【讨论】:

  • 这是否处理 Windows 文件名可能为 "Space Here" 而对于 Linux 将其转换为 "Space\ Here" 的情况?我知道我之前遇到过从 Windows 到 Linux 的间距问题,只是好奇
猜你喜欢
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多