内容概述:
在实际的工程中,有时会需要存储一些文件,如存放一些图片、数据文件等,存放这些文件时考虑将这些文件存放在哪里。
通常有两种方法来获取文件存放路径:
方法一,获取系统有效盘符 如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
}