Including a text file inside a jar file and reading it [duplicate]

无人久伴 提交于 2019-11-26 21:23:13

问题


Possible Duplicate:
Java resource as file

I am kind of new to Java and I am trying to get a text file inside a Jar file.

At the moment when I execute my jar I have to have my text file in the same folder as the jar fil. If the text file is not there I'll get a NullPointerException, which I want to avoid.

What I want to do is to get the txt file inside the jar so I wont have this problem. I tried some guides but they didn't seem to work. My current read function goes like this:

public static HashSet<String> readDictionary()
{
    HashSet<String> toRet = new HashSet<>();
     try
     {
            // Open the file that is the first 
            // command line parameter
            FileInputStream fstream = new FileInputStream("Dictionary.txt");
        try (DataInputStream in = new DataInputStream(fstream)) {
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strLine;
            //Read File Line By Line
            while ((strLine = br.readLine()) != null)   {
            // Read Lines
                toRet.add(strLine);
            }
        }
            return toRet;
     }
     catch (Exception e)
     {//Catch exception if any
            System.err.println("Error: " + e.getMessage());
     } 
     return null;
}

回答1:


Don't try to find a file as a "file" in a Jar file. Use resources instead.

Get a reference to the class or class loader and then on the class or class loader call getResourceAsStream(/* resource address */);.


See similar questions below (avoid creating new questions if possible):

  • Reading a resource file from within jar
  • How do I read a resource file from a Java jar file?
  • Accessing a file inside a .jar file
  • How to read a file from JAR archive?



回答2:


// add a leading slash to indicate 'search from the root of the class-path'
URL urlToDictionary = this.getClass().getResource("/" + "Dictionary.txt");
InputStream stream = urlToDictionary.openStream();

See also this answer.




回答3:


Seems like an exact duplicate of this question: How do I access a config file inside the jar?

Further to your problem with NullPointerException, I suggest not to make sure it doesn't happen, but rather prepare for it and handle it properly. I'd go even further to ask you to always check your variables for null value, it's a good thing to do.



来源:https://stackoverflow.com/questions/10452825/including-a-text-file-inside-a-jar-file-and-reading-it

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!