4.7 Date、LocalDate、File、IO流

本文介绍了Java中的日期类Date、LocalDate,详细讲解了它们的构造方法和常用方法,包括Date的before、after、compareTo等。此外,还探讨了SimpleDateFormat日期格式转换类的使用,如format和parse方法。对于File类,文章解释了其作为文件目录抽象表示的功能,以及如何进行读写权限检查、文件创建和删除。最后,讨论了字节流和字符流的区别,并给出了IO流复制文件的实例。
摘要由CSDN通过智能技术生成

4.7 Date、LocalDate、File、IO流

Date

​ 1.Date() 分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒。

​ 2.getTime() 获取毫秒数

​ 3.Date(long date) 分配 Date对象并初始化它以表示自标准基准时间(称为“纪元”)以来的指定毫秒数,即1970年1月1 日00:00:00 GMT

​ 4.boolean after(Date when) 测试此日期是否在指定日期之后。

​ 5.boolean before(Date when) 测试此日期是否在指定日期之前。

​ 6.Object clone() 返回此对象的副本。

​ 7.int compareTo(Date anotherDate) 比较两个日期的订购。

​ 8.boolean equals(Object obj) 比较两个相等的日期。

SimpleDateFormat 日期格式转换类|器

​ 1.格式:
​ 手动设置 new SimpleDateFormat(“转换格式模板”)
​ y 年
​ M 月
​ d 日期
​ H 时 24小时
​ hh 12小时制
​ m 分钟
​ s 秒
​ S 毫秒

​ 使用SimpleDateFormat默认格式 SimpleDateFormat()

​ 方法:
​ format(Date) 日期对象转为字符串
​ parse(String) 字符串转为日期对象

LocalDate

​ JAVA8新增系列时间日期API
​ 优点:
​ 线程安全
​ 操作简单,效率高

​ LocalTime:代表时间,可以通过时、分、秒来构造
​ LocalDate:代表日期,可以通过年、月、日构造,并且年/月/日的值都是符合日常使用习惯的
​ LocalDateTime:表示日期和时间,可以通过年、月、日、时、分、秒来构造,

//今年
        System.out.println("今年"+ Year.now());
        System.out.println("指定年" + Year.of(2022));
        //6月
        System.out.println("月份:"+ Month.FEBRUARY);
        System.out.println("月份:"+ Month.of(12));

        //今天不包含时分秒
        LocalDate today = LocalDate.now();
        System.out.println("今天:"+today);

        //您的生日
        LocalDate yourBirthDate = LocalDate.of(1999, Month.JUNE, 15);
        //LocalDate yourBirthDate = LocalDate.of(1999, 6, 15);
        System.out.println("生日:"+yourBirthDate);


        //此时此刻
        LocalDateTime now = LocalDateTime.now();
        System.out.println("现在:"+now);


        //您的学习时间
        LocalDateTime dateTime = LocalDateTime.of(2020, 2, 25, 12, 30,40);
        System.out.println("时间:"+dateTime);

        //日期转换器
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //格式化日期字符串
        LocalDateTime now2 = LocalDateTime.now();
        String nowStr = now2.format(formatter); //放入格式器
        System.out.println(nowStr);

        String dateStr= "2020-02-25 11:23:04";
         //转成日期
        LocalDateTime date= LocalDateTime.parse(dateStr, formatter);//放入格式器
        System.out.println(date);
         //获取日
        System.out.println(date.getDayOfMonth());
        System.out.println(date.getYear());

        LocalDate today3 = LocalDate.now();
        LocalDate birthDate = LocalDate.of(2001, 4, 7);
        //时期间隔 年月日
        Period p = Period.between(birthDate, today3);
        System.out.printf(p.getYears()+"年"+p.getMonths()+"月"+p.getDays()+"日");

        LocalDate startDate = LocalDate.of(1993, 8, 19);
        LocalDate endDate = LocalDate.of(1994, Month.JANUARY,16);
        //期量单位 间隔
        long between = ChronoUnit.YEARS.between(startDate, endDate);
        System.out.println("两年之间的差 : " + between); //0 不是1不满一年不计算在内
        between =ChronoUnit.MONTHS.between(startDate, endDate);
        System.out.println("两月之间的差 : " + between); //4 不是5不满一月不计算在内
        between =ChronoUnit.DAYS.between(startDate, endDate);
        System.out.println("两天之间的差 : " + between); //150

        //瞬间
        //不包含时区  小时: 差8小时
        Instant inst1 = Instant.now();
        System.out.println(inst1);
        Instant inst2 = inst1.minus(Duration.ofSeconds(3));
        System.out.println(inst2);
        System.out.println("毫秒相隔 : " + Duration.between(inst1, inst2).toMillis());
        System.out.println("毫秒相隔 : " + Duration.between(inst1, inst2).toSeconds());

        //系统默认时区
        ZoneId z = ZoneId.systemDefault();
        System.out.println(z);

File

​ 文件目录的抽象的表现形式(不确定系统中是否真实存在)

​ 1.构造器

​ File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。

​ File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

​ File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。

​ 2.常用方法

​ boolean setReadOnly() 标记此抽象路径名指定的文件或目录,以便仅允许读取操作。
​ System.out.println(file.setReadOnly());
​ boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。
​ System.out.println(file.canWrite());
​ System.out.println(file.canRead());
​ System.out.println(file.canExecute());

​ boolean createNewFile() 当且仅当具有此名称的文件尚不存在时,以原子方式创建由此抽象路径名命名的新空文件。

​ boolean exists() 测试此抽象路径名表示的文件或目录是否存在。

​ boolean delete() 删除此抽象路径名表示的文件或目录。

​ File getAbsoluteFile() 返回此抽象路径名的绝对形式。

​ String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串

​ 例子:

​ File file = new File(“src/haha.txt”); //默认在当前项目下+相对路径
​ File file2 = new File("/src/haha.txt"); //默认项目在盘符+想对路径

IO流

	file类能够操作文件外部得到内容,无法操作文件内容的内容数据,如果想要操作文件内部的内容通过IO流
IO 流:  (文件内容的读入写出,文件的拷贝,文件夹的拷贝,上传与下载..)
    流:  就是管道
        用来传输数据
        数据是以先入先出的形式流动传输

    数据源: 数据的源头
    目的地: 数据的传输位置
    中心: 人(大脑),程序为中心

    流的分类:
        流向分:
            输入流
            输出流
        操作单元:
            字节流 : 万能流
            字符流 : 只能操作纯文本内容
        功能分:
            节点流 : 真是能够做读入写出的流
            功能流 : 增强流

    流的分类都是相辅相成的!!!

    字节流 : 万能流
        节点流
                字节输入流 : InputStream
                字节输出流

        功能流

  InputStream 抽象父类,所有字节输入流的父类
    read.. close()

  FileInputStream 从文件系统中的文件获取输入字节。  流向: 输入   操作单元:字节流    功能:节点流

​ 字节流与字符流的区别:
​ 字节流用于操作文件数据,网络传输等场景,而字符流适用于与字符串,中文有关的内容处理,因为Writer/Reader两个 抽象类对字符的支持比较好。

​ 除了这些,字符输出流写数据时是先将数据写入缓冲区,待字符输出流关闭后再写入到文件中,而字节输出流是直接写 入到文件中。

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E2dsK47T-1617805003884)(C:\Users\m1827\AppData\Roaming\Typora\typora-user-images\image-20210407221539900.png)]

Copy实例

package com.xxxx;

import java.io.*;

public class CopyTest05 {
    public static void main(String[] args) throws IOException {

        //1.创建流
        InputStream is = new FileInputStream("C://Users/m1827/Desktop/图/5e.jpg");
        OutputStream os = new FileOutputStream("D://AAA/new.jpg");
        //2.创建数组提升赋值效率
        byte[] car = new byte[1024];
        //3.传输
        int len = -1;
        while((len = is.read(car)) != -1){
            os.write(car,0,len);
        }
        //4.刷出管道残余信息
        os.flush();
        //5.关闭管道
        os.close();
        is.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值