天天看点

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里边对应盘符

    }

}