启动时工作目录是
/Users/qkkcoolmax/work-private/testuserdir/hehe
/Users/qkkcoolmax/work-private/testuserdir/haha已经存在
public static void main(String[] args) { File file = new File("haha/test.log"); System.out.println(file.getAbsolutePath()); //Users/qkkcoolmax/work-private/testuserdir/hehe/haha/test.log System.out.println(System.setProperty("user.dir", "/Users/qkkcoolmax/work-private/testuserdir")); //Users/qkkcoolmax/work-private/testuserdir/hehe System.out.println(System.getProperty("user.dir")); //Users/qkkcoolmax/work-private/testuserdir System.out.println(file.getAbsolutePath()); //Users/qkkcoolmax/work-private/testuserdir/haha/test.log try { new FileOutputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } }
java无法运行时修改工作目录,上图中file.getAbsolutePath返回的路径是不准确的。
当调用new FileOutputStream()时,其最终输出路径仍然位于实际的工作目录,所以这里会由于hehe目录下不存在haha目录而抛出FileNotFoundExecption
file如果使用绝对路径来创建,则可避免工作路径无法修改带来的问题