Java 实训第11天 枚举

时间:2024-11-06 11:14:30

一、enum --- 枚举--JDK1.5
    对能够列举的数据进行封装 ---- 枚举类型
    枚举本质上也是class。
    定义枚举:
        enum Week{
        ...
        }
    enum定义的枚举实际上直接继承了Enum<E extends Enum<E>>。
    
    在枚举类型中,构造方法默认是private(私有)。
    
    案例:
    enum Color{
        RED("红" ,"夕阳红"),GREEN("绿" ,"草绿"),BLUE("蓝" ,"深海蓝");

        private String name;
        private String dis;
        Color(String name, String dis){
            this.name = name;
            this.dis = dis;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getDis() {
            return dis;
        }

        public void setDis(String dis) {
            this.dis = dis;
        }
    }
    
二、File
1、定义
    File表示文件或文件夹。

2、构造
    File(String pathname)
    File(URI uri)    //URI 统一资源标识,URL统一资源定位


3、常用方法
    创建
        createNewFile()---创建新文件---当文件不存在的时候才会创建
        mkdir()---创建目录 ---每次只能创建一层目录
        mkdirs()---创建多层目录
    删除
        delete()---删除文件或者目录---如果删除的是目录且该目录下有子文件或子目录则删除失败

    判断
        canWrite()---判断此文件是否可写
        isDirectory()---判断是否是一个目录 ***
        isFile()---判断是否是一个文件 ***
        exists()--判断此文件或者目录是否真实存在的 ***
        isAbsolute()---判断file所表示的文件的路径是否是一个绝对路径
        isHidden()---判断file是否是一个隐藏文件

    获取
        listFiles()---获取指定目录下子文件和子目录组成的数组
        getName()---获取文件名
        getAbsoluteFile()---获取file所在绝对路径


    练习:利用File的api实现统计某个目录(包括子目录)中的所有png图片的数量。
    
    请选择要统计的文件:
        1:统计html文件
        2:统计css文件
        3:统计js文件
        4:统计图片文件
        
        png,jpeg,jpg,gif
    
    
    
    基础代码:
        public class Day11Demo03 {
            private static int count=0;

            public static void main(String[] args) {
                counttor(new File("D:\\test\\gbts_12_proton\\assets\\tt.txt"));
                System.out.println("png文件数量:"+count);
            }

            public static void counttor(File file){
                if(file.isDirectory()){
                    File[] files = file.listFiles();
                    //遍历目录下的所有文件及文件夹
                    for (File f : files) {
                        if(f.isDirectory()){
                            //如果是目录,继续打开
                            counttor(f);
                        }else{
                            //如果是文件则判断是否为png图片
                            if(f.getName().toLowerCase().endsWith("png")) count++;
                        }
                    }

                }else{
                    System.out.println("不是一个目录~");
                }
            }
        }
    
4、文件处理中的路径问题
    分隔符:
        window: 路径分隔符使用"\",程序中"D:\\test\\logo.png"
        Linux/Mac: 路径分隔符使用"/"
    路径:
        相对路径:
            相对于当前文件的位置
            .    表示当前目录
            ..    表示上一层目录
        
        绝对路径:
            window -- 盘符+路径   D:\\workspace\\index.html
            Linux/Mac -- /+路径      /workspace/index.html
            
    java程序中的路径分隔符:根据不同系统平台自适应
        File.separator
        System.getProperty("file.separator")
    

三、RandomAccessFile
    在操作文件的时候会把文件看做一个大型的字节数组。
    每一个RandomAccessFile对象创建好之后默认都是从第0个字节开始操作。