簡體   English   中英

文件對象和不同的NetBeans包

[英]File object and different NetBeans packages

我喜歡將我的應用程序數據和代碼保存在NB中的不同源包中(不要誤認為Java包)。

所以我這次做了。 不幸的是,它無法通過File對象從一個包中獲取文件。 這是我的包裹結構

Source Packages
    |-[J]basicstuff
    |-[J]net.abc.utils
  assets
    |-[F]Images
    |-[F]Layouts

傳說:

  • 無指示-NB項目屬性中添加了源包
  • [J]標准java包
  • [F]-使用文件管理器創建的數據文件夾

事實是,當我使用自己的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM