我对使用上述方法感到困惑,因为当加载一些属性文件时,人们遵循的是不同的方法……
Properties prop
= new Properties(new FileInputStream(new File("<path of the properties file>"));
几乎没有人在使用..
Properties prop
= new Properties(getClass().getResourceAsStream("<path of the properties file>"));
什么时候使用哪一个?
发布于 2012-04-20 21:31:15
getResourceAsStream
在您的类路径中搜索给定的文件/资源,它还可以从JAR内部提供资源的InputStreams
。
因此,如果您的属性存在于物理文件系统中的某个文件夹中(例如,用户文件夹,...)使用FileInputStream
,如果文件嵌入到类路径中(例如,作为JAR中的资源),则使用getResourceAsStream
。
发布于 2012-04-20 21:35:34
从文件系统读取文件时,请使用使用相对路径或绝对路径的FileInputStream( file ())。
当您的程序作为jar分发,并且您需要加载该jar中的文件时,您需要使用getResourceAsStream(),它将在类路径中搜索该文件,并且该路径是相对于类路径的。
发布于 2012-04-20 21:31:12
如果您100%确定文件位置不会在不同环境中更改,则可以使用第一种方法。这意味着存在额外的操作,以确保在所有环境中创建这些目录路径。另一方面,您可以灵活地更新属性文件,而无需打开jar。
第二种方法非常可移植,因为您是从类路径读取的。但它的缺点是每次属性更新时都要重新捆绑jar文件。
所以,这基本上取决于你的用例。
https://stackoverflow.com/questions/10247161
复制相似问题