有什麼辦法從字節數組創建一個URL?我有一個自定義的類加載器,它將所有來自JarInputStream的條目存儲在一個HashMap中,這些HashMap存儲了條目名和字節。我期望從字節數組創建URL的原因是爲了滿足ClassLoaders中的getResource(String name)方法。我已經通過使用ByteArrayInputStream完成了getResourceAsStream(String name)。任何方式從字節數組創建一個URL?
回答
java.net.URL doc:其中一個構造函數是URL(String spec)
。
Then java.lang.String doc:其中一個構造函數是String(byte[] bytes)
。
創建String
你byte
數組,然後使用創建的String
創建URL
:
String urlString = new String(yourByteArray);
URL yourUrl = new URL(urlString);
抱歉,這給出了MalformedURLException,因爲它們byte []是連續的二進制數據而不是位置的二進制表示。這就是爲什麼OP提到在類加載器中緩存字節的原因。 – KIC
@KIC [*啊似乎工作,謝謝*](http://stackoverflow.com/questions/17776884/any-way-to-create-a-url-from-a-byte-array/17782177#comment -25928353) – BackSlash
好的,但爲什麼這個答案不被接受呢?而且我也有同樣的情況,而且我剛剛嘗試過(即使我有這種感覺,這種感覺永遠不會消失)。然而,我已經提供了我自己的答案,我是如何解決這個問題的。 – KIC
假設您使用自定義類加載器和要存儲/緩存內容的字節中hashmap(不是以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)));
}
}
}
- 1. 創建從一個字節數組WPF
- 2. 從字節數組創建一個CGPDFDocument
- 3. 如何創建一個字節數組?
- 4. NSUTF16LittleEndianStringEncoding創建一個字節數組
- 5. 任何方式來創建一個擴展數組的對象?
- 6. 創建一個從字節[]
- 7. 從Matlab中的一個字節創建一個數組
- 8. 從一個字節數組創建一個XPS文檔
- 9. 如何從字節數組創建XpsDocument?
- 10. 如何從HttpPostedFile創建字節數組
- 11. 如何從字節數組創建System.Windows.Media.ImageSource?
- 12. 任何方式從URL創建Excel片與數據與Python
- 13. 如何從一個字節創建一個字節[1]?
- 14. 創建從字節數組,得到這樣的字節數組
- 15. 如何從數組數據中創建一個url參數?
- 16. 從字節數組中創建一個變量
- 17. 從字節數組創建BitmapImage
- 18. 從字節數組中創建私鑰
- 19. 從C++的字節數組創建HICON?
- 20. 從字節數組創建文件
- 21. c#從字節數組創建xml
- 22. 從字節數組創建typeFace
- 23. 從字節數組創建BufferedImage java
- 24. 從字符串創建一個數組
- 25. 無法在groovy中創建一個字節數組數組
- 26. 使用一個字節數組創建一個AudioInputStream
- 27. 如何在perl中創建一個空字節數組
- 28. 如何在C++中創建一個字節數組?
- 29. 如何創建一個空字節數組?
- 30. 從多個整數數組創建一個字符串數組
[java.net.URL中docuentation(http://docs.oracle.com/javase/6/docs/api/java/net/URL。 html):其中一個構造函數是'URL(String spec)'。然後[java.lang.String文檔](http://docs.oracle.com/javase/6/docs/api/java/lang/String.html):其中一個構造函數是'String(byte [] bytes) '。用你的'byte'數組創建一個'String',然後使用創建的'String'來創建URL' – BackSlash
啊好像在工作,謝謝 – user1625108
@BackSlash你沒有理由不把它作爲答案的評論。如果它被投票,你會獲得更多的聲譽。 – tbodt