![](/img/trans.png)
[英]Is there any way to start reading from specific position of an URL byte stream?
[英]Any way to create a URL from a byte array?
有没有办法从字节数组创建URL? 我有一个自定义类加载器,它存储来自存储条目名称及其字节的HashMap中JarInputStream的所有条目。 我想要从字节数组创建一个URL的原因是为了满足ClassLoaders中的getResource(String name)方法。 我已经使用ByteArrayInputStream完成了getResourceAsStream(String name)。
假设您使用自定义类加载器,并且希望将内容的字节存储/缓存在散列映射(而不是byte []形式的位置)。 比你有同样的问题把我带到了这里。 但这就是我能够解决这个问题的方法:
class SomeClassLoader {
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 {
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.