系統項目中需要設置緩存目錄,原本項目中的目錄設置為D:/cache目錄,這怎么成?於是手動改成了cache目錄,原本想使用了相對路徑,web項目能夠把緩存路徑設置到tomcat的webapp的具體項目中,誰知道項目啟動后在web項目目錄中根本找不到這個目錄,什么原因?
原來這是java讀取文件機制的問題,如果直接這樣寫路徑new File("a.***"),那么tomcat就會從程序啟動的地方去創建這個文件(Java項目中也是如此),那么web應用是從有tomcat來執行的,tomcat這個程序是從哪里啟動文件是startup.bat,位置是tomcat/bin。
我們前面說了,普通java項目也是如此,從程序啟動的地方創建文件,那么文件路徑不會是JDK中bin路徑吧?不是這樣的,看實驗結果:
1 package io.guangsoft.file; 2 import java.io.File; 3 public class CreateFile { 4 public static void main(String args[]) { 5 File file = new File("location.txt"); 6 System.out.println(file.getAbsolutePath()); 7 } 8 }
實驗結果表明,默認的文件路徑是eclipse項目路徑,因為我們的項目從main函數啟動,而main函數在eclipse項目中,同理web項目的啟動入口main函數在tomcat的bin中的某個jar包。而jdk提供的僅是java運行程序不是真正的程序啟動路徑。