做为编程学习的新手,在我学习io原理的过程,需要创建和调用File文件,但是发现创建文件或者调用时,默认的路径与自己想当然的认为有出入。
问题描述一下:
当我用Eclipse创建了一个BufferedReaderDemo.java文件,其中有一句:
FileWriter fw = new FileWriter("write.txt")
1、当保存后,执行run as java application后,发现在我的工程(project)目录下生成了”write.txt”,而不是class的输出文件夹web(默认为bin)下,见“Properties — java buid path”。
2、因为我一直认为,Eclipse执行class时,肯定在class输出文件下路径下调用执行语句,即我的默认的语句一定是“java com.self.study.lesson2.io.BufferedReaderDemo”。
3、但是执行的结果告诉我,一定是我没搞清楚,最后我发现原来Eclipse执行class文件时是带参数,即java -cp ,见dos说明“-cp <目录和 zip/jar 文件的类搜索路径>”,
所以其实Eclipse默认通过project目录下执行“java -cp web com.self.study.lesson2.io.BufferedReaderDemo”。
4、所以问题的答案找到了:就是执行class的默认路径是在工程文件下,如我的javabase。
总结:
Eclipse的编译执行过程:
1、保存文件时,Eclipse默认自动编译java源文件,即获取当前文件的绝对地址,如我的java文件“C:\workspace10\javabase\src\com\self\study\lesson2\io\BufferedReaderDemo”,然后通过Eclipse配置的jdk路径(应该Eclipse配置的优先级大于环境变量),调用javac.exe。
2、生成class文件时,Eclipse会获取“Properties — java buid path”中”class output folder”配置的相对路径,加上工程的当前路径“C:\workspace10\javabase”和包路径,可以获取最终class文件的生成路径,即C:\workspace10\javabase\web\C:\workspace10\javabase。
3、当我们在Eclipse中执行class文件时,即点击“run as java application“,其实Eclipse默认在project目录下执行java -cp + 【 class output folder】 + package path。