2

我正在维护将文件传输到另一个系统并使用结构化文件名来包含元数据(包括语言代码)的应用程序。当前应用程序使用两个字符的语言代码和一个破折号/连字符作为分隔符。

前任。加拿大-EN-ProdName-ProdCode.txt

我正在将其转换为使用 IETF 语言代码,因此破折号分隔符不起作用并且需要替换。我正在尝试确定一个分隔符以避免将来出现错误,并且正在考虑使用波浪号 ~。

前任。加拿大~zh-CN~ProdName~ProdCode.txt

这将仅在 Windows Sever 2003 + 系统上使用。我当然没有想出这个解析文件名来获取元数据的系统。不幸的是,我不能将它包含在文件本身中,并且目标系统期望语言代码采用带有破折号的 IETF 格式。

对在文件名中使用波浪号的潜在问题有任何想法,或者使用更好的字符?我只是在寻找第二种意见,以防我忽略了可能的失败。我相信 Windows 在将长文件名缩短为 8.3 格式时会使用波浪号,但我不认为这是一个问题,因为操作系统可以处理 lang 文件名。

4

2 回答 2

3

波浪号可能没问题,但是旧的下划线 _ 有什么问题?它在 windows 或 unix 上都没有特殊含义,并且使名称相对易于阅读。如果没有其他特殊考虑,我会完全出于偏执而避免使用波浪号,因为正如您所提到的,Windows 有时确实将其用作特殊字符。

于 2010-07-23T04:40:15.060 回答
1

对于任何阅读这个问题的人,我强烈建议除了文件名中的波浪号之外的任何内容,或者至少在测试存在的任何 .NET 路径工作的任何速度问题时要小心。

前段时间我用它作为文件名分隔符。我不明白为什么简单地从文件夹中获取文件列表需要这么长时间。多年后(编写了许多具有边际优势的加速代码),我发现(至少在.NET中的DirectoryInfo(path).name)存在问题,其中波浪号的简单存在是迫使底层代码通过很多圈。

速度很慢(它是通过网络,所以我一直认为这是带宽/网络问题)

我知道这是一个遗留问题,因为当文件名的替代短版本可用于 Windows 文件时。

我现在被这些文件名中的波浪号卡住了,但是,鉴于问题出在某些 .NET 路径函数中(我实际上不知道它是否仍然存在),我可以通过发现波浪号并创建来解决它当它存在时我自己的答案,而不是通过它。

如果有任何疑问,只需在文件名中使用或不使用波浪号运行速度测试,例如 500-1,000 个文件。

于 2021-03-13T10:50:01.780 回答