[英]File object and different NetBeans packages
我喜歡將我的應用程序數據和代碼保存在NB中的不同源包中(不要誤認為Java包)。
所以我這次做了。 不幸的是,它無法通過File對象從一個包中獲取文件。 這是我的包裹結構
Source Packages
|-[J]basicstuff
|-[J]net.abc.utils
assets
|-[F]Images
|-[F]Layouts
傳說:
事實是,當我使用自己的GUI系統時,我有了自定義布局加載器。 布局是放置在資產/布局中的JSON文本文件。 不幸的是,我的layoutmanager(這是net.abc.utils中的另一個類)無法加載它們。 無論我做什么,我都無法加載。
我試過了
File layout = new File("assets/Layouts/layout.txt");
然后
File layout = new File("../../../assets/Layouts/layout.txt");
然后我記得它是上面的四個目錄,包括src dir。
File layout = new File("../../../../assets/Layouts/layout.txt");
但這也不起作用。
甚至嘗試過
File layout = new File("../../../../Layouts/layout.txt");
和
File layout = new File("../../../Layouts/layout.txt");
但是那些當然也沒有用。 你能幫助我嗎?
根據您的應用程序所在的環境 ( 獨立 , ApplicationServer ),您將需要使用適當的 ClassLoader
。
嘗試這樣的事情:
private static InputStream getResourceAsStream(String resource) throws FileNotFoundException {
String stripped = resource.startsWith("/") ? resource.substring(1) : resource;
InputStream stream = null;
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader != null) {
stream = classLoader.getResourceAsStream(stripped);
}
if (stream == null) {
stream = MyClass.class.getResourceAsStream(resource);
}
if (stream == null) {
stream = MyClass.class.getClassLoader().getResourceAsStream(stripped);
}
if (stream == null) {
throw new FileNotFoundException("Resource not found: " + resource);
}
return stream;
}
用來:
MyClass.getResourceAsStream("Layouts/layout.txt");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.