Java基础之JavaSE常用类的File类

File类

只用于表示文件或目录的信息,不能对文件内容进行访问。

java.io.File类∶代表文件和目录。在开发中,读取文件、生成文件、删除文件、修改文件的属性时经常会用到本类。

File类不能访问文件内容本身,如果需要访问文件内容本身,则需要借助输入输出流。

一.创建文件对象

package Filel;

import java.io.File;

public class Filelfd {
    public static void main(String[] args) {
        //创建一个File对象
        File file = new File("D:\\R");
        System.out.println(file);                              //D:\R
        //user.dir 用户目录
        System.out.println(System.getProperty("user.dir"));    //D:\JavaSE\OPP
    }
}

二.创建文件

package Filel;

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

//假设要创建一个 zyx.txt 文件,程序启动时会检测该文件是否存在,如果不存在则创建;如果存在则删除它再创建。
public class Filelc {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\zyx.txt");   //创建file对象
        if(file.exists()){   //判断文件是否存在
            file.delete();   //删除文件
            System.out.println("文件已删除");
        }
        //创建新的文件
        try {
            //创建新的文件
            file.createNewFile();       //需要抛出
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("文件已重新创建");
    }
}

三.查看文件属性

package Filel;

import java.io.File;
import java.util.Date;
//查看文件基本属性
public class Filefs {
    public static void main(String[] args) {
        String path1="D:\\SteamLibrary\\steamapps\\common\\Tricolour Lovestory\\savedata\\chs";
        String path2="JavaSE";
        showFileDetails(path1);
        showFileDetails(path2);
    }
    public static void showFileDetails(String path){
        File file = new File(path);
        System.out.println("==========================================");
        System.out.println("文件名字:"+file.getName());
        System.out.println("文件长度:"+file.length()+"字节");
        System.out.println((file.isDirectory()? "是目录" : "是文件" ));
        System.out.println((file.canRead()? "能读" : "不能读" ));
        System.out.println((file.canWrite()? "能写" : "不能写" ));
        System.out.println((file.isHidden()? "隐藏" : "没隐藏" ));
        System.out.println("文件路径:"+file.getPath());
        System.out.println("文件带域名的完整路径:"+file.getAbsolutePath());
        System.out.println("服务器端文件的最后修改时间:"+new Date(file.lastModified()));
        System.out.println("==========================================");
        
    }
}

四.文件修改、查看、删除等。

1.递归遍历输出目录文件

通过遍历目录可以在指定的目录中查找文件,或者显示所有的文件列表。File 类的 list() 方法提供了遍历目录功能,该方法有如下两种重载形式。

String[] list():该方法表示返回由 File 对象表示目录中所有文件和子目录名称组成的字符串数组,如果调用的 File 对象不是目录,则返回 null。

String[] list(FilenameFilter filter):该方法的作用与 list() 方法相同,不同的是返回数组中仅包含符合 filter 过滤器的文件和目录,如果 filter 为 null,则接受所有名称。

使用过滤器输出指定的文件,假设希望只列出目录下的某些文件,这就需要调用带过滤器参数的 list() 方法。首先需要创建文件过滤器,该过滤器必须实现 java.io.FilenameFilter 接口,并在 accept() 方法中指定允许的文件类型。

2.delete和deleteOnExit方法的区别。

delete()方法:当调用delete()方法时,直接删除文件,不管该文件是否存在,一经调用立即执行;

deleteOnExit()方法:即该方法是将删除的命令缓存了一下,到服务停止的时候再进行操作

file.deleteOnExit();    
file.createNewFile();

此处的deleteOnExit()是在JVM退出的时候才执行的,因此相当于是先调用了createNewFile()再调用deleteOnExit();

package Filel;
import java.io.File;
import java.io.FilenameFilter;
public class Filexg {
    public static void main(String[] args) {
        File file = new File("D:\\www\\zys.txt");
        //设置文件只读(只能打开来观看,不能修改也不能储存)
        //该方法返回布尔数据类型。如果File对象可以设置为Read Only,则该函数返回true,否则返回false。
        System.out.println(file.setReadOnly());
        //文件重命名
        //该方法返回布尔数据类型。如果File对象修改成功,则该函数返回true,否则返回false。
        File dest = new File("D:\\www\\zyl.txt");
        boolean b = file.renameTo(dest);  //修改file对象名字
        System.out.println(b);
        //文件删除
        
        File l = new File("D:\\www\\zzx.txt");
        l.deleteOnExit();

        File dir = new File("D:\\www");
        //目录的创建
       // dir.mkdirs();//可以创建多级目录
        dir.mkdir();//只能创建一级目录
        //目录的读取
        System.out.println("修改时间:"+dir.lastModified());
        System.out.println("目录路径:"+dir.getPath());
        System.out.println("目录名:"+dir.getName());
        //目录名修改
        dir.renameTo(new File("D:\\www22"));
        //目录删除
        dir.deleteOnExit();
        
        //***递归遍历输出目录文件****

        //获取当前目录下的所有文件及文件名
        File hx = new File("D:\\www22");
        String[] paths = hx.list();
        for (String path : paths) {
            System.out.println(path);
        }
        System.out.println("===============================");
        //)获取指定目录所有文件带域名完整目录对象
        File[] fs = hx.listFiles();
        for(File f: fs){
            System.out.println(f);
        }
        //获取指定格式的文件信息
        //过滤器
        File[] files = hx.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
               return name.startsWith("z");
            }
        });
        for (File ol : files) {
            System.out.println(ol.getName()+" : "+ol.getPath());
        }
    }
}

五.枚举

enum 枚举名 {
    枚举体(常量列表)
}

当你需要定义一组常量时,可以使用枚举类型

package Filel;

import java.util.Random;
//枚举
public class Filemeiju {

    enum Week {
        周一, 周二, 周三, 周四, 周五, 周六,周日
    }
    public static void main(String[] args) {
        //Week.values()相当于数组名字 = args
        //Week.values()[i]=args[i]
        //Week.values().for
        for (Week value : Week.values()) {
            System.out.print(value+" ");
        }
        System.out.println();
        System.out.println("############################");
        Random random = new Random();
        int i= random.nextInt(7);
        System.out.println(i);
        switch (Week.values()[i]){
            case 周一:
                System.out.println("周一啦");
                break;
            case 周二:
                System.out.println("周二啦");
                break;
            case 周三:
                System.out.println("周三啦");
                break;
            case 周四:
                System.out.println("周四啦");
                break;
            case 周五:
                System.out.println("周五啦");
                break;
            case 周六:
                System.out.println("周六啦");
                break;
            case 周日:
                System.out.println("周日啦");
                break;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值