我在运行时获得了一个jar文件URL:
jar:file:///C:/proj/parser/jar/parser.jar!/test.xml
Run Code Online (Sandbox Code Playgroud)
如何将其转换为有效路径:
C:/proj/parser/jar/parser.jar.
Run Code Online (Sandbox Code Playgroud)
使用我已经试过File(URI),getPath(),getFile()是徒劳的.
sta*_*lue 34
如果MS-Windows没有被前导斜杠冒犯,这可能会这样做:
final URL jarUrl =
new URL("jar:file:/C:/proj/parser/jar/parser.jar!/test.xml");
final JarURLConnection connection =
(JarURLConnection) jarUrl.openConnection();
final URL url = connection.getJarFileURL();
System.out.println(url.getFile());
Run Code Online (Sandbox Code Playgroud)
不确定是否有任何确切的方法可以满足您的需求,但这应该可以让您接近:
import static org.junit.Assert.assertEquals;
import java.net.URL;
import org.junit.Test;
public class UrlTest {
@Test
public void testUrl() throws Exception {
URL jarUrl = new URL("jar:file:/C:/proj/parser/jar/parser.jar!/test.xml");
assertEquals("jar", jarUrl.getProtocol());
assertEquals("file:/C:/proj/parser/jar/parser.jar!/test.xml", jarUrl.getFile());
URL fileUrl = new URL(jarUrl.getFile());
assertEquals("file", fileUrl.getProtocol());
assertEquals("/C:/proj/parser/jar/parser.jar!/test.xml", fileUrl.getFile());
String[] parts = fileUrl.getFile().split("!");
assertEquals("/C:/proj/parser/jar/parser.jar", parts[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
39425 次 |
| 最近记录: |