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;


/**
 * 1.获取
 *      1.1获取文件名称
 *      1.2获取文件路径
 *      1.3获取文件大小
 *      1.4获取文件修改时间
 *       
 * 2.创建,与删除.
 *      boolean 
 * 3.判断
 *   exist  是否存在,必须先判断是否存在,在进行其他判断
 * 4.重命名
 * rename
 * 
 * 
 * 获取你本机上最大空闲空间的盘符
 * 
 * 
 * **/












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();
    }
/*********************list方法升级,遍历指定目录*****************/
    private static void listDemo2() {
// TODO Auto-generated method stub
File dir=new File("D:\\");

String [] names=dir.list(new fileFilter());
/*fileFilter的运行原理:先用list方法获取目录下所有文件,
然后用accept方法遍历没所有文件名,返回和给定条件符合的文件名,就是结果为true的*/

for(String name:names){
   System.out.println(name);
}



    }
/***************list方法的使用*******************/
    public static void listDemo() {
/*****************************/
File file=new File("d:\\");
/*****************************
*调用list方法的file对象中封装的必须是目录
*否则会发生NullPointerException空指针异常
*如果访问系统级目录也会发生空指针异常
*如果目录存在但是没有内容.会返回一个数组,但是长度为0

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


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值