don*_*ton 4 java url uri file path
尝试在文件和URL之间进行转换时,我会遇到一些奇怪的行为,特别是当文件/路径名称中包含空格时.有没有安全的方法来转换两者?
我的程序具有文件保存功能,其中实际的"保存"操作被委托给需要URL作为参数的外部库.但是,我还希望用户能够选择要保存的文件.问题是当在文件和URL之间进行转换(使用URI)时,空格显示为"%20"并且搞乱了各种操作.请考虑以下代码:
//...user has selected file
File userFile = myFileChooser.getSelectedFile();
URL userURL = userFile.toURI().toURL();
System.out.println(userFile.getPath());
System.out.println(userURL);
File myFile = new File(userURL.getFile());
System.out.println(myFile.equals(userFile);
Run Code Online (Sandbox Code Playgroud)
这将返回false(由于"%20"符号),并且在我的程序中导致严重问题,因为文件和URL被切换,并且通常必须使用它们执行操作(例如获取父/子目录).有没有办法使文件/ URL处理对于具有空格的路径安全?
PS如果我的路径中没有空格(并且路径看起来相同),那么一切正常,但这是我不能强加的用户限制.
问题是您使用URL构造第二个文件:
File myFile = new File(userURL.getFile());
Run Code Online (Sandbox Code Playgroud)
如果您坚持使用URI,那么您最好:
URI userURI = userFile.toURI();
URL userURL = userURI.toURL();
...
File myFile = new File(userURI);
Run Code Online (Sandbox Code Playgroud)
要么
File myFile = new File( userURL.toURI() );
Run Code Online (Sandbox Code Playgroud)
在使用空白测试文件名时,这两种方式都适用于我.
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |