File類

路徑常量

靜態的,設置路徑常量的目的是為了方便跨平臺。

  1. Path-separator 即路徑分隔符 File.pathseparator(windows下為";")
  2. name-separator 即名稱分隔符File.separator(windows下為"",linux下為"/")
  3. 三種方式
  • Strinng path="E:\test\2.jpg";
  • Strinng path="E"+FIle.separator+"test"+File.separator+"2.jpg";
  • Strinng path="E:/test/2.jpg";(推薦使用這種!)

絕對路徑與相對路徑,構造器

  1. 相對路徑
    File(String parent,String child)-------------->File("E:/xp/test","2.jpg");
    File(File parent,String child)----------------->File(new File("E:/xp/test"),"2.jpg");
  2. 絕對路徑
    File(String name);

如果給的路徑沒有盤符,就會在當前的工作空間下創建。此為相對路徑,但是沒有父目錄。


常用方法

  1. 文件名相關
    getName();返回文件名,文件夾也是的。
    getPath();返回路徑,若是相對應工作空間下的相對路徑,就返回相對路徑。
    getAbsolutePath():返回絕對路徑。可用來查看相應的工作空間。
    getAbsoluteFile();等同于new File(this.getAbsolutePath());
    getParent();返回文件的最近一層目錄,如果是相對路徑且沒有指定父目錄,則返回空。
    <br />
  2. 判斷信息(讀取的是信息而不是文件的內容,所以不會拋出異常)
    exists();判斷文件是否存在
    canWrite();
    canRead();判斷是否可讀或可寫。文件夾也可以判斷。
    isFile();判斷是不是文件,如果不存在返回false
    isDirectory();判斷是否為文件夾,不存在也返回false
    isAbsolute();判斷是否為絕對路徑
    <br />
  3. 長度
    length();
    只有文件才能讀出長度,文件夾會返回0。
    <br />
  4. 創建和刪除文件
    createNewFile();不存在則創建新文件返回true,存在則返回false表示創建失敗
    delete();返回boolean表示成功或者失敗
    臨時文件(靜態方法):
    createTempFile(前綴3個字節長,后綴默認為.temp)創建在默認臨時空間
    createTempFile(前綴3個字節長,后綴默認為.temp,目錄文件)創建在對應目錄下
    deleteOnExit();推出虛擬機時刪除(程序退出時),常用于刪除臨時文件。
public static void main(String[] args) {
        File temp=null;
        try {
            //創建臨時文件
            temp=File.createTempFile("vik", ".temp",new File("F:/javaIotest"));
            //等5秒
            Thread.sleep(5000);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            //在finally里面,刪除
            temp.deleteOnExit();
        }
    }
  1. 操作目錄的方法
    mkdir();創建目錄,必須確保父目錄存在,否則創建失敗
    mkdirs();如果父目錄鏈不存在,則一同創建
    list();子文件或目錄的字符串形式,用數組接收
    listFiles();子文件或目錄的文件對象,用數組接收
    靜態方法:File.listRoots 得到所有的根目錄
    命令設計模式
    listFiles(new FilenameFilter(){匿名內部類重寫accept方法});過濾,得到符合條件的文件

利用listFiles();方法打印目錄下所有文件,使用遞歸

public static void main(String[] args) {
        File parent=new File("F:/javaIotest");
        printFiles(parent);
    }
    
    public static void printFiles(File parent){
        File[] files=parent.listFiles();
        for(File temp:files){
            System.out.println(temp.getAbsolutePath());
            
            if(temp.isDirectory())
                printFiles(temp);
        }
    }

利用命令設計模式,過濾得到jpg后綴的文件

public static void printFiles(File parent){
        //命令設計模式,FilenameFilter重寫accept方法
        File[] files=parent.listFiles(new FilenameFilter(){

            public boolean accept(File dir, String name) {
                //與那個參與篩選的文件建立聯系
                File f=new File(dir,name);
                //如果是目錄那么也通過
                if(f.isDirectory()){
                    return true;
                }
                //不是目錄是文件,就篩選是否以.jpg結尾的文件
                return name.endsWith(".jpg");
            }});
        //遍歷,如果是目錄遞歸調用自己,如果是文件就打印名字
        for(File temp:files){
            if(temp.isDirectory())
                printFiles(temp);
            else System.out.println(temp.getName());
        }
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容