Is there a standard/good way of converting between urls and windows filenames, in Java?
I am trying to download files, but I want the windows filename to be convertible back to the original filename. Note that the query portion of the url is vital, as I will be downloading different pages that differ only in query.
My current hacky solution is to replace illegal characters (such as '?') with a specific string (such as 'QQ'), but this makes conversion back to url less transparent. Is there a better way?
The java.io.File class takes a URI &| filename as a constructor, but contains
toURI()
&toURL()
methods as well asgetName()
&getPath()
. I assume this would be a valid conversion for you?If you mean to convert an URL encoded to non encoder you could use:
URLDecoder
See if that's what you need.
You could do worse than use URLEncoder to encode the URL:
The filename becomes the legal win32 name:
This is a reversible operation:
But is it possible to encode url to filename at all? I mean, can there be the 100% valid solution? I think that converting url to filename is the wrong idea in general, because of different limitations set on urls and filenames:
Max filename length (NTFS filesystem, Unicode, using UTF-16 encoding) - 255
Max URL length (using UTF-8 encoding?) - 2000 chars