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