Java:非applet应用程序上的getCodeBase()

时间:2012-01-03 15:09:38

标签: java url applet

我正在尝试创建一个URL来访问本地文件,如下所示:

URL myURL = new URL(getCodeBase(), "somefile.txt");

但是当它尝试getCodeBase()时会抛出NullPointerException。我很确定这背后的原因是因为这段代码所属的类文件不是applet。有没有办法在不使用applet的情况下获得代码库?我只想访问本地文件而不必将实际目录放入(因为当其他人运行应用程序时,目录路径显然不会相同)。

4 个答案:

答案 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应用程序时设置的类路径。

如果您浏览上面的链接,您会看到一些示例代码,显示如何解析类路径中文件的路径。