java基础--->文件操作--->实例---->文件存放路径:绝对路径和相对路径

内容概述:

  在实际的工程中,有时会需要存储一些文件,如存放一些图片、数据文件等,存放这些文件时考虑将这些文件存放在哪里。

  通常有两种方法来获取文件存放路径:

    方法一,获取系统有效盘符  如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采样所得数据将会被放置在以下目录中:
"+path);
        File dir=new File(path);
        if(!dir.exists()){
            dir.mkdirs();
        }
        System.out.println(dir.getAbsolutePath()+"是否存在:"+dir.exists());
/*二、获取当前文件夹
*   这是获取相对路径的方法(常用),便于程序在不同的计算机OS中迁移
*   获得当前工程所在文件夹,如本例中是D:workspaceOfJavaEclipsejavaTest
*/
        File root2=new File(".");//获得当前文件夹(即工程目录),结果D:workspaceOfJavaEclipsejavaTest
        //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

}