簡體   English   中英

如何在Java中將文本文件從類路徑加載到String []

[英]How to load a text file from classpath to a String[] in Java

我試圖從文本文件中讀取內容到字符串。 在Netbeans IDE中,一切都可以完美運行,但是如果我進行編譯,則一切正常。

這是我的代碼:

private String[] getSplashes(String Name) {
    String[] sp = null;
    try {
        String content = new Scanner(new File(getClass().getResource(Name).getFile())).useDelimiter("\\Z").next();
        sp = content.split(";");
    } catch (IOException ex) {
    }
    return sp;
}

這是我得到的例外:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at jumpover.MenuDrawing.getRandomSplash(MenuDrawing.java:51)
    at jumpover.MenuDrawing.<init>(MenuDrawing.java:47)
    at jumpover.JOFrame.<init>(JOFrame.java:18)
    at jumpover.JOFrame.lambda$main$0(JOFrame.java:46)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

我不知道我在做什么錯!

使用getClass().getResourceAsStream(Name)

代替

new File(getClass().getResource(Name).getFile())

最后,您將獲得:

String content = new Scanner(getClass().getResourceAsStream(Name)).useDelimiter("\\\\Z").next();

將資源作為文件訪問始終是一個壞主意,因為該資源可以位於JAR文件內部,因此不能作為公共文件直接訪問。 但是,如果您以流形式訪問它,則始終可以訪問它。

如果生成jar文件,則必須將txt文件與jar的文件夾放在同一文件夾中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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