如何在不掩盖原始URL的情况下将URL(可能包括查询字符串)表示为Java中的文件名?

时间:2011-01-11 18:52:24

标签: java

有没有真正的方法来表示URL(很可能也会有一个查询字符串)作为Java 中的文件名而不会完全隐藏原始网址

我的第一种方法是简单地使用任意替换来转义无效字符(例如,将“/”替换为“_”等)。 问题是,在用下划线替换的示例中,诸如“app / my_app”之类的URL将变为“app_my_app”,从而完全遮盖原始URL。 我也试图对所有特殊字符进行编码,但是再次看到疯狂的%3e%20等真的不清楚。

感谢您提出任何建议。

2 个答案:

答案 0 :(得分:3)

嗯,你应该知道你想要什么。请记住,文件名的限制因系统而异。在Unix系统上,你可能只需要以某种方式逃避virgule,而在Windows上你需要处理冒号和问号。

我想,最安全的做法是使用百分比编码对任何可能发生冲突的事物进行编码(所有非字母数字都是一个很好的候选者,尽管你可以通过迁移来适应平台)。它仍然有点可读,你可以保证恢复原来的网址。

答案 1 :(得分:0)

为什么呢? URL编码已在RFC中定义:重新发明它并没有多大意义。基本上你必须有一个转义字符,如%,否则你无法判断一个字符是代表自己还是逃避。例如。在您的示例中,app_my_app可以代表app / my / app。因此,您还需要一个双转义约定,以便表示转义字符本身。这并不简单。