使用java编码文件名

时间:2013-01-30 09:50:57

标签: java unix

我想编写一个可逆编码器以及相应的解码器,这样任何字符串都可以编码为与Unix文件系统的文件命名规则相对应的合法文件名。 怎么做到这一点? 例: “xyz.txt”将是一个有效的文件名,而“xyz / .txt”则不会。

1 个答案:

答案 0 :(得分:0)

tl; dr :您的方法存在缺陷。坚持文件系统的局限性。它们很难被优雅地克服(特别是在没有引入你自己的,甚至更奇怪的限制的情况下)。


不可能制作一个严格可解码的。您正在尝试将较大的域映射到较小的域,这意味着无法知道反向映射 - 正确可逆。

通过一个简单的示例很容易演示:如何对/进行编码以使其可以反转? “简单”,你可能会说,“我只会用令牌x替换。”但是现在您如何知道x何时是实际的x,以及当您的x是一个应该转换为x的'特殊'/时?你不能。

你当然可以建立一个不太可能发生意外冲突的系统。例如,您可以将其更改为/,而不是将-更改为---(这非常容易出错)。


哦,同样,对于它的价值,大多数unix文件系统实际上认为除/以外的任何字符或空字符都是有效字符(more)。显然,使用它是一种痛苦的屁股。