相对路径文件
问题描述:
我使用属性文件:相对路径文件
try
{
properties.load(new FileInputStream("filename.properties"));
}
catch (IOException e)
{
}
我应该在哪里放置filename.properties
?我不想指定绝对路径,因为此代码必须在不同的平台上工作。我试图将它放在与de class相同的目录中,但它不起作用。 (对不起,如果这是一个愚蠢的问题)
也许我可以得到当前类被放置在哪里的路径?
答
确保您的财产文件提供给您的编译(的.class)文件,并把它这样
getClass().getResource("filename.properties") // you get an URL, then openStream it
或
getClass().getResourceAsStream("filename.properties") // you get an InputStream
例子:
import java.net.URL;
public class SampleLoad {
public static void main(String[] args) {
final URL resource = SampleLoad.class.getResource("SampleLoad.class");
System.out.println(resource);
}
}
这main在运行时检索自己的编译版本:
文件:/ C:/ _项目/工具箱/目标/班/组织/游戏/工具箱/ SampleLoad.class
答
你可以使用: 字符串USERDIR = System.getProperty( “user.dir来” );
好吧,它的工作原理,但我必须从该路径中删除'file:/',所以我必须用我的代码中的'新FileInputStream(filename.properties)“替换为:FileInputStream(resource.toString()。substring (“file:/”。length(),resource.toString()。length())));' ' – de3 2011-05-11 15:28:26
@ de3,使用@ Guillaume的第二种形式'getResourceAsStream(*)'。即使你用罐子装运你的课程,它也会继续工作。 – 2011-05-11 19:27:20