我正在尝试创建一个URL来访问本地文件,如下所示:
URL myURL = new URL(getCodeBase(), "somefile.txt");
但是当它尝试getCodeBase()时会抛出NullPointerException。我很确定这背后的原因是因为这段代码所属的类文件不是applet。有没有办法在不使用applet的情况下获得代码库?我只想访问本地文件而不必将实际目录放入(因为当其他人运行应用程序时,目录路径显然不会相同)。
答案 0 :(得分:4)
我会使用以下内容相对于工作目录
URL myURL = new URL("file:somefile.txt");
或
URL myURL = new URL("file", "", "somefile.txt");
或
File file = new File("somefile.txt");
答案 1 :(得分:1)
您无需获取代码库。 如果文件驻留在类路径上(这包括部署类的路径),则可以访问ClassLoader方法getSystemResource。
URL myURL = ClassLoader.getSystemResource("somefile.txt");
答案 2 :(得分:1)
如果somefile.txt
是只读的,请将其放在应用程序的运行时类路径中的Jar中。使用以下方式访问它:
URL urlToText = this.getClass().getResource("/path/to/somefile.txt");
如果是读/写:
user.home
的已知子目录中的文件。答案 3 :(得分:0)
请参阅How to create a folder in Java发帖,其中提出了非常相似的问题。
正如Tomas Narros所说,正确的方法是使用ClassLoader在Classpath中查找资源文件。传递给ClassLoader的路径是相对于启动Java应用程序时设置的类路径。
如果您浏览上面的链接,您会看到一些示例代码,显示如何解析类路径中文件的路径。