天天看點

javaday48_IO流_File類的使用,File過濾器,周遊檔案目錄

一.檔案或者檔案目錄的封裝

package java_Studing_day48_IO流8_file;

import java.io.File;

public class fileDemo {

    public static void main(String[] args) {

// TODO Auto-generated method stub

         constractorDemo();

    }

    private static void constractorDemo() {

// 可以将一個已存在的或者不存在的檔案或者目錄封裝成對象

File f1=new File("f1.txt");

File f2=new File("c:\\","f2.txt");

//可以先将路徑封裝成對象,便于管理路徑

File f=new File("c:\\");

File f3=new File(f,"file3.txt");//路徑加檔案名

File f4=new File("c:\\abc\\f4.txt");

File f5=new File("c:"+System.getProperty("file.separator")+"abc\\f4.txt");

//file.separator,路徑分隔符

File f6=new File("c:"+File.separator+"abc"+File.separator+"f4.txt");

System.out.println(f4);

System.out.println(f5);

System.out.println(f6);

    }

}

二.File類對檔案或者目錄的基本操作

package java_Studing_day48_IO流8_file;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.text.DateFormat;

import java.util.Date;

public class filefunctionDemo {

    public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

//changefile();

 //getDemo();

//creatAndDeleteDemo();

 //isDemo();

//reName();

listRootsDemo();

    }

private static void listRootsDemo() {

File file=new File("c:\\");//将D盤封裝成對象

System.out.println("getFreeSpace:"+file.getFreeSpace());//擷取目前對象空閑空間

System.out.println("getTotalSpace:"+file.getTotalSpace());//擷取目前對象總空間容量

System.out.println("getUsableSpace:"+file.getUsableSpace());//擷取目前對象可用空間容量

    // 擷取系統根目錄

// File[] files=File.listRoots();

// for(File file:files){

//    System.out.println(file);

// }

    }

private static void reName() {

// TODO Auto-generated method stub

File f1=new File("a.txt");

File f2=new File("c.txt");

File f3=new File("d:\\cc.txt");

//将同一路徑下的檔案重命名

boolean b=f1.renameTo(f2);

//如果檔案路徑變了,檔案會被剪切并重命名到新的路徑

boolean d=f2.renameTo(f3);

System.out.println(b);

System.out.println(d);

    }

private static void isDemo() throws IOException {

// TODO Auto-generated method stub

File file=new File("jorian1.txt");//封裝路徑或者檔案名為一個對象

boolean b=file.exists();

//file.createNewFile();

file.mkdir(); 

boolean c=file.isDirectory();//是否是檔案夾

boolean d=file.isFile();//是否是檔案

System.out.println(b);

System.out.println(c);

System.out.println(d);

    }

private static void creatAndDeleteDemo() throws IOException {

File dir=new File("dd");//其實封裝的是最後qqw檔案夾

File dirs=new File("gg\\asddf\\sdf\\aslk\\asdhj\\df\\df\\df\\e\\r\\t\\y\\qqw");//其實封裝的是最後qqw檔案夾

boolean b=dir.mkdir(); //建立檔案夾

dirs.mkdirs();//建立多級檔案夾

        //dir.delete();

        //dir.deleteOnExit(); //隻會删除qqw檔案夾,因為dir中封裝的其實就是qqw檔案夾   

   File file=new File("d:\\file.txt");

//

boolean a=file.createNewFile();//如果檔案不存在建立,如果檔案存在報False

//        

// boolean f=file.delete();//直接删除

//        file.deleteOnExit();//程式退出時删除

//        System.out.println(a);

    }

private static void changefile() throws IOException {

// TODO Auto-generated method stub

    BufferedWriter bfw=new BufferedWriter(new FileWriter("a.txt"));

    bfw.write("Jorian是個大帥哥");

    bfw.close();

    }

public static void getDemo() {

    File file=new File("xxxxx.txt");//第一步,封裝檔案或者檔案目錄為對象

    String name=file.getName();//檔案名

    String abPath=file.getAbsolutePath();//絕對路徑

    String path=file.getPath();//相對路徑

    long len=file.length();//檔案大小

    long time=file.lastModified();//檔案最後一次了修改時間,此方法可以用來判斷檔案最後一次了的修改時間,判斷是否需要重新讀取檔案

    //時間格式轉換

    Date date=new Date(time);

    DateFormat dateFormat =DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);

    String dtime=dateFormat.format(date);

    System.out.println("name:"+name);

    System.out.println("abPath:"+abPath);//絕對路徑,具體的路徑

    System.out.println("path:"+path);//相對路徑,沒有指定前邊的路徑

    System.out.println("len:"+len);

    System.out.println("time:"+dtime);

}

}

三.list方法周遊指定檔案目錄,FileFilter的使用

1>>

package java_Studing_day48_IO流8_file;

import java.io.File;

public class FilelistDemo {

    public static void main(String[] args) {

// TODO Auto-generated method stub

listDemo();

listDemo2();

    }

    private static void listDemo2() {

// TODO Auto-generated method stub

File dir=new File("D:\\");

String [] names=dir.list(new fileFilter());

for(String name:names){

   System.out.println(name);

}

    }

    public static void listDemo() {

File file=new File("d:\\");

String[] names=file.list();//擷取目前路徑下檔案或者檔案夾名稱清單,包括隐藏檔案

for(String name:names){//周遊names,将每一次周遊到的值放在name中

System.out.println(name);

    }

}

    }

2>>>

package java_Studing_day48_IO流8_file;

import java.io.File;

import java.io.FilenameFilter;

public class fileFilter implements FilenameFilter {

    @Override

    public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

System.out.println(dir+"--------"+name);

return name.endsWith(".java");//傳回以.java結尾的檔案

    }

}

四.練習,擷取本機最大空閑容量的盤符

package java_Studing_day48_IO流8_file;

import java.io.File;

import java.util.HashMap;

import java.util.Map;

public class getMaxFreeSpaceDir {

    public static void main(String[] args) {

// 擷取系統目錄下最大容量的盤符

   get();

    }

    private static  void get() {

File[] files=File.listRoots();//将擷取到的所有盤符放到一個目錄數組裡

long  max = 0 ; //定義最大容量值

Map map= new HashMap();//定義一個map集合

for(int i=0;i<files.length;i++){//周遊盤符

   String dir=files[i].toString();//将每個盤符轉成String類型

   File file=new File(dir);  //将盤符封裝成file對象

  long fs=file.getFreeSpace(); //擷取盤符的空閑容量

  map.put(fs, dir);//通過Map将空閑容量和 盤符對應起來

  max=max>=fs?max:fs;//重新整理最大容量值

}

System.out.println(map.get(max));//通過容量搜尋Map裡邊對應盤符

    }

}