內容概述:
在實際的工程中,有時會需要存儲一些文件,如存放一些圖片、數據文件等,存放這些文件時考慮將這些文件存放在哪里。
通常有兩種方法來獲取文件存放路徑:
方法一,獲取系統有效盤符 如D:/,然后進行路徑擴展,將擴展后的路徑作為存放這些文件的根路徑。這種方法有一個缺點,那就是在不同的操作系統中進行程序遷移時,會很麻煩;
方法二,獲取當前文件夾(即程序工程目錄)如d:/projectName,然后進行路徑擴展,將擴展后的路徑作為存放這些文件的根路徑。最終存放程序文件的目錄和程序代碼目錄在同一個文件夾下。這種方法是更為常用的方法,使用這種方法編寫的程序更易於在不同操作系統中遷移,也方便與程序的管理,如程序卸載時,刪除整個程序文件夾可以保證程序數據也被清理掉,而使用“方法一”編寫的程序則不能保證將程序數據文件刪除掉,需要使用者手動尋找到該程序的數據文件的存放路徑,然后手動刪除。
下面的代碼舉例說明了上述兩種方法的java編程實現:
/** * @author lxrm * @date 20161115 * @description 不同計算機的系統盤符是不相同的,有的計算機有“C:” "D:" "E:" "F:" * 但是有些計算機只有C盤和D盤,還有Linux系統中系統盤符是/home等 * 本程序舉例說明如何獲取本地計算機中的有效盤符 * */ package file_operation; import java.io.File; import java.io.IOException; public class Example8_getEffectiveDisks { public static void main(String[] args){ /*一、獲取本機有效盤符,C: D: E: ... * 這是獲取絕對可用路徑的方法(不常用),一般使用“二”中所描述的獲取相對路徑的方法來存放想要存放的數據、文件.. */ File[] roots=File.listRoots(); System.out.println("本地計算機的有效盤符有:"); for(int i=0;i<roots.length;i++){ System.out.println(roots[i].getAbsolutePath()); } String rootPath=roots[1].getAbsolutePath();//選定上述列表中最后一個磁盤作為下面所要使用的根目錄 String path=rootPath+"/LeapMotionData/FrameData";//Frame對象數據的存放目錄 System.out.println("LeapMotion采樣所得數據將會被放置在以下目錄中:\n"+path); File dir=new File(path); if(!dir.exists()){ dir.mkdirs(); } System.out.println(dir.getAbsolutePath()+"是否存在:"+dir.exists()); /*二、獲取當前文件夾 * 這是獲取相對路徑的方法(常用),便於程序在不同的計算機OS中遷移 * 獲得當前工程所在文件夾,如本例中是D:\workspaceOfJavaEclipse\javaTest */ File root2=new File(".");//獲得當前文件夾(即工程目錄),結果D:\workspaceOfJavaEclipse\javaTest //File root2=new File("..");//獲得當前文件夾的父文件夾,結果D:\workspaceOfJavaEclipse try { String rootDir2=root2.getCanonicalPath(); System.out.println("當前工程所在文件夾:"+rootDir2); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }//end main }