java.io.File

java.io.File
File用于表示硬盘上的一个文件或目录(实际上表示的是一个抽象路径)
使用File可以:

  1. 访问其表示的文件或目录的属性(名字、大小、权限等)
  2. 创建,删除文件或目录
  3. 访问一个目录中的子项

* 但是File不能访问文件数据

* File是没有无参构造的,里面必须传入参数,参数是字符串类型,里面传的是文件所在的路径,我们在写程序时,需要指定路径时通常使用相对路径,虽然看起来模糊,但是他有更好的跨平台性,"./"在相对目录中的意思是"当前目录",这个目录具体指哪里要视当前程序而定,对于idea和eclipse而言,当前目录指定的是当前程序所在的项目目录

* 绝对路径:根目录开始,不利于跨平台
* 相对路径:./ 开始,相对路径有良好的跨平台性,在写相对路径的时候,./可以省略,.表示当前目录,./表示当前目录下

访问其表示的文件或目录的属性(名字、大小、权限等)代码演示

package file;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        /*
        写程序时,需要指定路径时通常使用相对路径,虽然看起来模糊,但是他有更好的跨平台性,
        "./"在相对目录中的意思是"当前目录",这个目录具体指哪里要视当前程序而定
        对于IDEA和eclipse而言,当前目录指定的是当前程序所在的项目目录
         */
        File file=new File("./demo.txt");
        //获取文件的名字
        String name=file.getName();
        System.out.println("名字:"+name);

        //获取文件的大小,单位是字节
        long length=file.length();
        System.out.println("大小:"+length+"字节");

        //是否可读
        boolean cr=file.canRead();
        System.out.println("可读"+cr);
        //是否可写
        boolean cw=file.canWrite();
        System.out.println("可写"+cw);
        //是否隐藏
        boolean ih=file.isHidden();
        System.out.println("是否隐藏"+ih);
        
        
    }
}

创建文件代码演示:createNewFile()

package file;

import java.io.File;
import java.io.IOException;


public class CreateNewFileDemo {
    public static void main(String[] args) throws IOException {
        /*
    在当前目录下新建一个文件:test.txt
     */
        //在相对路径中"./"可以忽略不写,默认就是在当å前目录下
        File file=new File("./test.txt");
        if (file.exists()){
            System.out.println("该文件已存在");
        }else {
            file.createNewFile();
            System.out.println("该文件已创建");
        }

    }

}

删除文件代码演示:delete()

package file;

import java.io.File;

public class DeleteFileDemo {
    public static void main(String[] args) {
        //将当前目录下的test.txt文件删除
        File file=new File("test.txt");
        if (file.exists()){
            file.delete();
            System.out.println("该文件已删除");
        }else {
            System.out.println("该文件不存在");
        }

    }
}

创建目录代码演示:mkdir()/mkdirs()

package file;

import java.io.File;

public class MKDirDemo {
    public static void main(String[] args) {
          //File dir=new File("demo");
        File dir=new File("a/b/c/d");
        if(dir.exists()){
            System.out.println("该目录已存在");
        }else {
            dir.mkdir();
            //mkdir要求创建的目录所在的目录必须存在
            dir.mkdirs();
            //mkdirs则会将不存在的父目录一同创建出来,使用更灵活
            System.out.println("该目录已创建");
        }
    }
}

 删除目录代码演示:delete

delete删除目录时有一个前提条件:目录必须是空的才可以删除

package file;

import java.io.File;


public class DeleteDirDemo {
    public static void main(String[] args) {
        //删除demo目录
        File dir=new File("demo");
        if(dir.exists()){
            dir.delete();
        //delete删除目录时有一个前提条件:目录必须是空的才可以删除
            System.out.println("该目录已删除");
        }else {
            System.out.println("该目录不存在");
        }
    }
}

获取一个目录中的所有子项:listFiles()
获取该目录中的所有子项,每个子项都是以一个File实例形式保存在数组中并将该数组返回

package file;

import java.io.File;

/**
 * 获取一个目录中的所有子项
 */
public class ListFilesDemo {
    public static void main(String[] args) {
        //获取当前目录下的所有内容
        File dir = new File(".");
        /*
            boolean isFile()        判断当前File表示的是否为一个文件
            boolean isDirectory()   判断当前File表示的是否为一个目录
         */
        if(dir.isDirectory()){
            /*
                File[] listFiles()
                获取该目录中的所有子项,每个子项都是以一个File实例形式保存在数组中并将该
                数组返回。
             */
            File[] subs = dir.listFiles();
            System.out.println(subs.length);
            for(int i=0;i<subs.length;i++){
                System.out.println(subs[i].getName());
            }
        }

    }
}

listFiles()还提供了一个重载的方法:File[ ] listFiles(File Filter filter)
获取该目录中满足给定过滤器要求的所有子项

package file;

import java.io.File;
import java.io.FileFilter;

/**
 * 有条件的获取一个目录中的部分子项
 *
 * 重载的方法:
 * File[] listFiles(File Filter filter)
 * 获取该目录中满足给定过滤器要求的所有子项
 */
public class ListFilesDemo2 {
    public static void main(String[] args) {
        
        if (dir.isDirectory()){
                //创建匿名内部类
//            FileFilter filter=new FileFilter() {
//                @Override
//                public boolean accept(File file) {
//                    return file.getName().endsWith(".txt");
//                }
//            };
            File[] subs=dir.listFiles(new FileFilter() {
                @Override
                public boolean accept(File file) {
                    return file.getName().endsWith(".txt");
                }
            });

    
            File[] subs=dir.listFiles(filetr);
            System.out.println(subs.length);
        }
    }
}




 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

謹言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值