任何方式从字节数组创建一个URL?
有什么办法从字节数组创建一个URL? 我有一个自定义的类加载器,它将所有来自JarInputStream的条目存储在一个HashMap中,这些HashMap存储了条目名和字节。 我期望从字节数组创建URL的原因是为了满足ClassLoaders中的getResource(String name)方法。 我已经通过使用ByteArrayInputStream完成了getResourceAsStream(String name)。
假设您使用自定义类加载器,并且希望将内容的字节存储/缓存在散列映射中(而不是byte []形式的位置)。 比你有同样的问题把我带到这里。 但这是我能够解决这个问题的方法:
class Somelassloader {
private final Map<String, byte[]> entries = new HashMap<>();
public URL getResource(String name) {
try {
return new URL(null, "bytes:///" + name, new BytesHandler());
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
class BytesHandler extends URLStreamHandler {
@Override
protected URLConnection openConnection(URL u) throws IOException {
return new ByteUrlConnection(u);
}
}
class ByteUrlConnection extends URLConnection {
public ByteUrlConnection(URL url) {
super(url);
}
@Override
public void connect() throws IOException {
}
@Override
public InputStream getInputStream() throws IOException {
System.out.println(this.getURL().getPath().substring(1));
return new ByteArrayInputStream(entries.get(this.getURL().getPath().substring(1)));
}
}
}
java.net.URL doc:其中一个构造函数是URL(String spec)
。
然后java.lang.String doc:其中一个构造函数是String(byte[] bytes)
。
用你的byte
数组创建一个String
,然后使用创建的String
来创建URL
:
String urlString = new String(yourByteArray);
URL yourUrl = new URL(urlString);
链接地址: http://www.djcxy.com/p/58273.html
上一篇: Any way to create a URL from a byte array?
下一篇: What's the difference between ClassLoader.load(name) and Class.forName(name)