[Java核心API]IO流--文件File

总结文件File的相关知识

1.文件基础知识

package day06file;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
/**java.io.File
 * File的每一个实例用于表示操作系统中文件系统中的一个文件或目录(硬盘上的一个文件或目录)。
 * 文件系统是操作系统的一部分,用于管理硬盘上的数据,通常会将数据以文件形式表示,并用目录进行归纳
 * 
 * 当使用File表示一个文件或目录时,可以:
 * 1:访问该文件或目录的属性信息,例如:文件名,最后修改时间,文件大小等。
 * 2:可以操作文件或目录(创建,删除)
 * 3:可以访问该目录的所有子项但是不能访问文件数据。*/
public class FileDemo {
    public static void main(String[] args) throws IOException {
        File file = new File("."+File.separator+"demo.txt");
        /**File可以访问其表示的文件或目录的属性信息 */
//      获取该文件的名称 void getName()
        System.out.println("name:"+file.getName());//name:demo.txt
//      获取该文件的大小(字节量) int length()
        System.out.println("length:"+file.length());//length:38
//      获取文件是否可以读取,boolean canRead()
        System.out.println("canRead:"+file.canRead());//canRead:true
//      获取文件是否可以写   boolean canWrite()
        System.out.println("canWrite:"+file.canWrite());//canWrite:true
//      获取文件是否可执行 boolean canExecute()
        System.out.println("canExcecute:"+file.canExecute());//canExecute:true
//      是否为隐藏文件 boolean isHidden()
        System.out.println("isHidden"+file.isHidden());//isHidden:false
//      最后修改日期 lastModified()
        long lastModifiedTime = file.lastModified();
        SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD  HH:mm:ss");
        String str = sdf.format(lastModifiedTime);
        System.out.println("lastModifiedTime:"+str);//lastModifiedTime:2016-08-14  13:20:19

        /**File可以操作文件或目录,即:创建一个文件或目录*/
//      在当前目录下创建test.txt,不加路径默认在当前目录下
        File f = new File("test.txt");
//      boolean exists()判断当前File表示的文件或目录是否真实存在
        if(!f.exists()){
            f.createNewFile();
            System.out.println("创建完毕");
        }else{
            System.out.println("文件已经存在");
        }
//      void delete()删除一个文件,删除当前目录中的test.txt
        File fl = new File("test.txt");
        if(f.exists()){
            f.delete();
            System.out.println("文件已删除");
        }else{
            System.out.println("文件不存在");
        }
//      void mkdir()创建一个目录   在当前目录下创建目录demo
        File dir = new File("demo");
        if(!dir.exists()){
            dir.mkdir();
            System.out.println("目录创建完毕");
        }else{
            System.out.println("目录已存在");
        }

        /**创建一个多级目录         在当前目录demo下创建a/b/c/d/f**/
        File dr = new File("demo"+File.separator+
                            "a"+File.separator+
                            "b"+File.separator+
                            "c"+File.separator+
                            "d"+File.separator+
                            "f");
        if(!dr.exists()){
            dr.mkdirs();
            System.out.println("目录创建完毕");
        }else{
            System.out.println("目录已存在");
        }

        /***删除目录
         * 删除目录与删除文件的方法一致,delete方法,
         * 但是删除目录有一个前提条件,该目录是一个空目录(该目录中不包含任何子项),否则无法删除
         * 先在当前目录中创建一个a文件夹*/
        File d = new File("a");
        if(d.exists()){
            d.delete();
            System.out.println("删除完毕");
        }else{
            System.out.println("删除不成功");
        }

        /**获取一个目录中的部分子项           获取当前目录下得所有子项**/
        File fz = new File(".");
        File[] subs = fz.listFiles();
        System.out.println(subs.length);
        for(File sub:subs){
            if(sub.isFile()){
                System.out.print("文件");
            }else if(sub.isDirectory()){
                System.out.print("目录");
            }
            System.out.println(sub.getName());
        }
        System.exit(0);
    }
}

2.文件过滤器

package day06file;
import java.io.File;
import java.io.FileFilter;
public class FileFilterDemo {
    public static void main(String[] args) {
        /**获取一个目录中满足条件的部分子项
         * File[] listFiles(FileFilter filter)
         * 该重载方法要求传入一个文件过滤器,然后该方法只会返回当前目录中满足过滤器要求的所有子项*/
//      获取目录下所有名字以“.”开头的文件或目录
        File dir = new File(".");
        FileFilter filter = new MyFilter();
        File[] subs = dir.listFiles();
        for(File sub:subs){
            System.out.println(sub.getName());
        }
    }

}
class MyFilter implements FileFilter{
//  添加该过滤器的过滤条件,满足条件返回true
    @Override
    public boolean accept(File f) {
//      名字以"."开头
        String name = f.getName();
        return name.startsWith(".");
    }
}

3.递归删除文件

package day06file;
import java.io.File;
/**
 * 删除File表示的文件或目录
 * 使用递归的方法
 * */
public class FileDeleteDiGui {
    public static void main(String[] args) {
        File f = new File("."+File.separator+"a");
        delete(f);
    }
    public static void delete(File file){
        if(file.isDirectory()){
//          将其所有子项删除
            File[] subs = file.listFiles();
            for(File sub:subs){
                delete(sub);
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值