好几次,在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 执行,就可以和开发时得到一样的结果。
?