Java基础学习总结:IO之(一)File类

File类

(1)文件类的作用

在Java程序中,对磁盘文件进行描述的类。文件或目录路径的抽象表示形式。在 java.io 包中。

(2)构造方法

构造方法描述

File(File parent, String child)

根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

File(String pathname)

通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

File(String parent, String child)

根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

(3)属性

属性描述

static String pathSeparator

与系统有关的路径分隔符,为了方便,它被表示为一个字符串(;)。

static char pathSeparatorChar

;

static String Separator

与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串(\)。

static char SeparatorChar

\

(4)常用方法

1)操作文件

构造方法:

//创建文件,不会验证文件是否存在

//使用绝对路径
File file_1 = new File("C:\\Users\\Administrator\\Desktop\\test.txt");

//使用相对路径,在项目根目录下
File file_2 = new File("test.txt");

//指定父路径和子路径
String parentPath = "C:\\Users\\Administrator\\Desktop";
File file1 = new File(parentPath,"test_1.txt");

System.out.println(file_1.toString());
System.out.println(file_2.toString());
System.out.println(file_3.toString());

创建文件:createNewFile()

//创建文件,先判断文件是否存在
if(!file.exists()){
    //返回值
    boolean b = file.createNewFile();
    System.out.println("创建结果:"+b);
}else{
    System.out.println("文件已存在");
}

删除文件:delete() 和 deleteOnExit()

 文件不存在时返回false

//删除文件
boolean b = file.delete();
System.out.println("删除结果:"+b);

//退出JVM时删除文件
Thread.sleep(5000);
file.deleteOnExit();

判断:

System.out.println("是否可执行:"+file.canExecute());//windows下不支持,永远为true
System.out.println("是否可读:"+file.canRead());//windows下不支持,永远为true
System.out.println("是否可写:"+file.canWrite());

System.out.println("是否是文件:"+file.isFile());
System.out.println("是否是隐藏文件:"+file.isHidden());
System.out.println("是否是绝对路径:"+file.isAbsolute());

获取:

System.out.println("获取绝对路径:"+file.getAbsolutePath());
System.out.println("获取规范路径:"+file.getCanonicalPath());//跟绝对路径差不多,字母大写
System.out.println("获取绝对路径:"+file.getName());//只获取文件名
System.out.println("获取路径:"+file.getPath());//相当于绝对路径
System.out.println("获取文件长度:"+file.length());
System.out.println("获取最后修改时间:"+file.lastModified());//单位毫秒,1970年始
System.out.println("获取最后修改时间:"+new Date(file.lastModified()).toLocaleString());

2)操作目录

创建:mkdir() 和 mkdirs()

如果是多级目录,使用 mkdir() 创建时会返回 false

//目录
File dir = new File("C:\\Users\\Administrator\\Desktop\\Suxing\\test");
//创建文件夹
if(!dir.exists()){
    System.out.println("创建结果"+dir.mkdirs());//创建多级目录
    //file.mkdir();//只能创建一级目录
}else{
    System.out.println("目录已存在");
}

删除目录:

目录的删除和文件的删除一样,但是删除目录时,只能删除最里面的一个目录,而且此目录必须为空。

//删除目录
System.out.println("删除目录"+dir.delete());
//JVM删除
dir.deleteOnExit()

判断:

其他判断方法 同操作文件的方法用法相同,此处不再列举。

System.out.println("是否是文件夹:"+dir.isDirectory());

获取:

获取文件夹的相关信息同获取文件的信息方法相同,对于文件夹,还可以获取文件夹中一级目录下的所有文件和文件夹,

获取文件夹中一级目录下的所有文件和文件夹(没有过滤器):

//获取文件夹中的所有文件和目录
String[] myDir = dir.list();//不过滤
for(String str:myDir){
    System.out.print(str+",");
}
//获取文件夹中的所有文件和目录
File[] files = dir.listFiles();//不过滤
for(File file:files){
    System.out.print(file.getName()+",");
}

使用过滤器获取文件夹中一级目录下的所有指定类型的文件:

//文件过滤器
String[] myDir = dir.list(new FilenameFilter() {
    @Override
    public boolean accept(File dir, String name) {
        if(name.endsWith(".txt"))
            return true;
        return false;
    }
});

for(String str:myDir){
    System.out.print(str+",");
}

 使用Lambda表达式实现:

FilenameFilter filenameFilter =(myDir,name)-> {
    if(name.endsWith(".txt"))
        return true;
    return false;
};

String[] myDir = dir.list(filenameFilter);

for(String str:myDir){
    System.out.print(str+",");
}

上述代码通过匿名内部类,实现了一个文件过滤器接口,满足条件的文件返回 true 否则返回false。

FilenameFilter源码:

package java.io;

@FunctionalInterface
public interface FilenameFilter {
    boolean accept(File dir, String name);
}

重命名(也可实现剪切功能):

//重命名,该方法可以实现剪切。剪切目录时,该目录必须为空
boolean b = dir.renameTo(new File("C:\\Users\\Administrator\\Desktop\\test_1.txt"));

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值