• 大数据学习--day15(常用类:Date--DateFormat--SimpleDateFormat--File--包装类)


    常用类:Date--DateFormat--SimpleDateFormat--File--包装类

    这些常用类就不像字符串挖那么深了,只列列用法。

    时间处理:

    /**
     *    时间处理类
     *        DateFormat    抽象类
     *        SimpleDateFormat    子类
     *
     *        父类的格式器不够灵活 尤其是在解析的时候
     *        必须满足 yyyy-MM-dd HH:mm:ss  其中 - : 是核心  不能变
     *        如果要灵活使用 必须靠子类
     */
    public class TestFormatDate {
        public static void main(String[] args) throws ParseException {
            Date date = new Date();
            System.out.println(date);
            
            /**
             * 解决问题1 
             */
            
            // 得到 年月日的格式器 其实就是一个 子类的对象  然后调用 format 方法
            String format = DateFormat.getDateInstance().format(date);
            System.out.println(format);
            
            
            // 得到 时分秒的格式器 其实就是一个 子类的对象  然后调用 format 方法
            format = DateFormat.getTimeInstance().format(date);
            System.out.println(format);
            
            // 得到 年月日-时分秒的格式器 其实就是一个 子类的对象  然后调用 format 方法
            format = DateFormat.getDateTimeInstance().format(date);
            System.out.println(format);
            
            
            /**
             * 解决问题2  难以计算毫秒 来获得指定时间的 Date 对象
             */
            String str = "2000-1-1 12:12:13";
            // 获得 年月日的格式器 然后把字符串解析成 Date 对象
            Date parse = DateFormat.getDateInstance().parse(str);
            Person person = new Person("铁柱",parse);
            System.out.println(person);
            
            // 获得年月日  时分秒 的格式器    然后把字符串解析成 Date 对象
            parse = DateFormat.getDateTimeInstance().parse(str);
            person = new Person("铁柱",parse);
            System.out.println(person);
            
            str = "12:13:14"; // 如果获得的是 时分秒格式器  那么字符串不能出现年月日
            parse = DateFormat.getTimeInstance().parse(str);
            person = new Person("铁柱",parse);
            System.out.println(person);
            
            
        }
    }

    文件类:用法看API,放两个学习例子,模拟dir操作,递归删除文件夹(循环加栈删除)

    模拟dir操作

    /**
         * 模拟 dos命令    dir命令 
         * 时间
         * 目录 | 字节数
         * 文件名字
         * 文件计数  统计字节
         * 目录计数  可用字节
         */
        public static void DIR(File file){
            if( !file.isDirectory() ){
                System.out.println("不是目录");
                return ;
            }
            
            // 来到这里肯定是 目录
            
            // 时间处理
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd  HH:mm");
            Date date = null;
            
            // 文件目录    字节 计数    
            int fileSize = 0;
            int dirSize = 0;
            int lengthCount = 0 ;
            
            // 获得所有子文件对应的 file 对象
            File[] files = file.listFiles();
            // 遍历获得每一个
            for (File f : files) {
                
                long time = f.lastModified();
                date = new Date(time);
                System.out.printf("%-21s",sdf.format(date));
                
                String name = "";
                if( f.isDirectory() ){
                    name = "<DIR>";
                    dirSize++;
                }
                System.out.printf("%-10s",name);
                
                String length = "";
                if(f.isFile()){
                    length += f.length();
                    fileSize++;
                    lengthCount += f.length();
                }
                System.out.printf("%-10s",length);
                
                
                System.out.println(f.getName());
            }
            
            System.out.println("			"+fileSize+"个文件   共 "+lengthCount+" 字节");
            System.out.println("			"+dirSize+"个目录 "+file.getUsableSpace());
        }

    递归删除文件夹

    /**
     * 递归删除文件夹
     * 该方法可以删除任意的 file 对象代表的文件
     */
    public void delete(File file){
        // 先判断是不是目录 如果是就删除其所有的子文件
        // 所有的子文件删除完毕之后 再删自己
        if( file.isDirectory()){
            File[] files = file.listFiles();
            for (File f : files) {
                delete(f);
            }
        }
        file.delete();// 删自己
    }

    非递归删除文件夹(文件模拟一个队列,文件夹模拟一个栈)

    package sy180928;
    
    import java.io.File;
    import java.util.ArrayList;
    
    /**
     * @author suyuan
     *非递归删除文件夹
     */
    public class FileDelStack
    {
    
        public static void main(String[] args)
        {
            File file=new File("E:\sy\test");
            delete(file);
            System.out.println("删除成功");
    
        }
        
        public static void delete(File file)
        {
            ArrayList<File> filelist=new ArrayList();
            ArrayList<File> dirList=new ArrayList();
            if(file.isFile())
            {
                file.delete();
            }
            filelist.add(file);//是文件夹就压栈
            while(filelist.size()>0)
            {
                File f=filelist.remove(0);//出队列
                File[] listFiles = f.listFiles();
                for (File file2 : listFiles)
                {
                    if(file2.isFile())
                    {
                        file2.delete();
                    }
                    else
                    {
                        filelist.add(file2);//是文件夹就压栈
                        dirList.add(file2);
                    }
                }
            }
            //只剩空文件夹了
            System.out.println(dirList);
            System.out.println(dirList.size());
            for (int i=dirList.size()-1;i>=0;i--)
            {
                System.out.println(dirList.get(i)+"  "+i);
                dirList.get(i).delete();
            }
            System.out.println(dirList+"ddd");
            file.delete();
        }
    
    }

    包装类是为了好放入集合,重点掌握拆箱,装箱。

      自动装箱 : 可以把基本数据类型 直接赋值给 其对应的包装类的引用
      自动拆箱 : 从对象状态 可以直接转换成 其对应的基本数据类型
  • 相关阅读:
    环境变量学习(二)Mac 可设置环境变量的位置
    环境变量学习(一)简介、查看
    shell学习(二)安装shell环境
    npm学习(十八)npm scripts 使用指南
    nodemon学习(二)实战
    nodemon学习(一)简介、安装、配置、使用
    Error: listen EADDRINUSE 127.0.0.1:8888错误解决
    树莓派创建wifi热点
    JavaScript中的数据类型转换
    Packstack 搭建 OpenStack 报 MariaDB 错误的处理
  • 原文地址:https://www.cnblogs.com/symkmk123/p/9734565.html
Copyright © 2020-2023  润新知