首先要问自己:文件是应用程序的 组件吗?(这通常意味着它打包在您的JAR或WAR(如果它是一个Web应用程序)中;通常,它是一些配置文件或静态资源,只读)。
如果答案是肯定的,则您不想为文件指定 。但是您都不希望使用 访问它(例如您的示例),因为Java假定该路径是相对于“ ”的。通常,此方案的首选方法是 加载它。
Java 为此提供了classLoader.getResource() 方法。Eclipse(在常规设置中)假定src/
它位于类路径的根目录中,因此在编译后,它将所有内容复制到输出目录(bin/
)中,并以编译形式(.class
)复制Java文件,而其余??部分则保持原样。
因此,例如,如果您将文件放在中src/Files/myfile.txt
,它将在编译时复制到bin/Files/myfile.txt
;并且在运行时bin/
将位于您的类路径(的根目录)中。因此,通过调用getResource("/Files/myfile.txt")
(在某些版本中)您将能够阅读它。
编辑 :此外,如果您的文件在概念上与java类相关联(例如,某些文件com.example.MyClass
具有MyClass.cfg
关联的配置文件),则可以使用该类中的getResource()方法并使用(资源)相对路径:MyClass.getResource("MyClass.cfg")
。然后,将在类路径中搜索该文件,但预先添加了类包。因此,在这种情况下,通常会将MyClass.cfg
和MyClass.java
文件放在同一目录中。