好几次,在java中用相对路径打开文件,都报找不到文件的错误,改成绝对路径后正常。
今天准备检查一下,相对路径到底应该怎么写。
测试代码:
public class testfilepath {
? public static void main(string[] args) {
??? testfilepath testfilepath1 = new testfilepath();
??? file file = new file("test.txt");
??? system.out.println(file.getabsolutepath());;
? }
}
到命令行下用java命令执行该class文件,在不同的路径下执行,取得的结果不一样。
如下:
执行方法1:
f:\2004\projects\jbproject\myserver\classes>java test_bak.testfilepath
f:\2004\projects\jbproject\myserver\classes\test.txt
执行方法2:
f:\2004\projects\jbproject\myserver>java -classpath classes test_bak.testfilepath
f:\2004\projects\jbproject\myserver\test.txt
执行方法3:
f:\2004\projects\jbproject>java -classpath myserver/classes test_bak.testfilepath
f:\2004\projects\jbproject\test.txt
可见,相对目录的起点,不是class文件所在的路径,而是,java解释器所在的位置。
不过,jbuilder下执行时,会以jbuilder默认的命令执行,h:\jbuilder9\jdk1.4\bin\javaw -classpath ….. test_bak.testfilepath
执行结果是f:\2004\projects\jbproject\myserver\test.txt
所以,如果在jbuilder下开发java应用程序操作文件,相对目录的起点一般是classes\的上一层目录,也就是应用目录,写出来的程序,
执行时再以-classpath classes 执行,就可以和开发时得到一样的结果。
?