JAVA学习记录DAY26-日期类和io流总结

本文总结了Java中的日期类Date、Calendar和SimpleDateFormat的使用,强调了时间获取和格式化的方法。同时,详细介绍了File类的操作以及IO流的不同类型和应用场景,包括字符流、字节流、缓冲流和对象流,提供了文件操作的实例和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好久没有更新,因为最近学习的东西比较多且杂,时间也不太够用,于是就一直来不及总结。今天来总结一下最近学习的几个知识点。一个是继续把实用类总结收尾,一个是总结一下IO流,再一个总结一下多线程和XML。这篇先把日期类和io流总结一下。

实用类里还有三个和时间相关的类,一个是Date一个是Calendar,还有一个SimpleDateFormat用来转换。

在JAVA里常用来获取时间的方法有System.currentTimeMillis()这是一个long型的ms为单位的整数,该整数的值代表的是距离格林尼治标准时间(1970年1月1日0时0分0秒)的毫秒数。Date类的getTime()方法和System.currentTimeMillis()的效果是一模一样的。但由于千年虫的历史原因,Date类现在不直接用它来获取日期,而仅用来获取时刻,获取日期要配合使用SimpleDateFormat和Calendar类。

SimpleDateFormat有一个相对标准且严格的日期格式:yyyy/MM/dd HH:mm:ss

其中,y要小写,M要大写,d要小写,H大写是24小时制小写是12小时制,m是小写,s是小写。大家可以试试看哪些大小写可以改哪些不可以,但是最好就是记住这个格式严格套用就好了。也可以写成:yyyy-MM-dd HH:mm:ss或者yyyy年MM月dd日HH:mm:ss。常用方法是.format()和.parse()

Calendar类

Calendar类是个抽象类,不能直接new对象,通常要和date以及SimpleDateFormat一起使用。获取Calendar对象的方式一般用Calendar.getInstance()或者通过SimpleDateFormat对象.getCalendar()方法获取。通过Calendar对象可以setTime(),get(Calendar的静态方法),Calendar有很多静态方法,这个实际要用的时候现查现用。

总结io流之前先总结一下File类。

File类是操作文件的一个类,在计算机里可以视为一切都是文件。默认是有参构造,因此新建对象的时候要传一个String类型的参数进去,常用方法有exists(),isFile(),isDirectory(),getPath();getFile(),getParentFile(),getName(),delete(),deleteOnExit(),CreateNewFile(),mkdirs()。这里有个小坑,当一个路径不存在的时候,无论这个路径名是文件还是文件夹,用isFile()或者isDirectory()判断的结果都是false,所以不能通过判断isFile()或isDirectory()来确定是createNewFile()还是mkdirs()

遍历一个文件夹下的所有文件的方法,假设该方法叫做allfiles():

File f=new File(path);
File[] files=f.listFiles();
if(files==null || !f.exists()) retutn;
for(int i=0;i<files.length;i++){sout(files[i]);
allfiles(files[i].getpath());}//这边使用到一个递归调用,判断退出的条件是files数组为空,或者f不存在,因此可以正常跳出不会陷入死循环。

io流,io流一般都用来处理File。流按照流向分分为输入流input和输出流output,输入流是内存去读取文件,输出流是内存去写入文件。按照处理单元分分为字符流和字节流,字符流和字节流的区别,字节流一次传送1个字节,字符流一次传送2个字节,字节流是 8 位通用字节流,字符流是 16 位 Unicode 字符。按照使用目的分可以分为,转换流,缓冲流,二进制流,对象流。

下面按照使用场景分类来总结下:

如果是做全英文和数字的文件处理,主要用FileInputStream和FileOutputStream,这是字节输入流和字节输出流。

如果是包含中文的文件处理,主要用FileReader和FileWriter,这是字符输入流和字符输出流。

如果处理的文件非常大,数据量多,主要用缓冲流BufferedReader和BufferedWriter,缓冲流的优点是有一条.readline()指令可以读一行。这是字符输入输出流。

如果处理的文件是视频或者图片的拷贝,主要用二进制流DataInputStream和DataOutputStream。要搭配FileInputStream和FileOutputStream使用,这是字节输入输出流。

如果处理的文件是存储的对象,或者想以对象的形式存储文件,就需要使用对象流,但要求该对象的类实现了序列化的接口,因为ObjectInputStream和ObjectOutputStream在使用的时候第一步就是序列化和反序列化。这也是字节输入输出流,要搭配FileInputStream和FileOutputStream使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值