标题图
Java当中的IO流(下)-上
日期和时间
日期类:java.util.Date
系统时间:
long time = System.currentTimeMillis();
public class DateDemo { public static void main(String[] args){ long time = System.currentTimeMillis(); System.out.println(time); } }
currentTimeMillis
public static long currentTimeMillis()
currentTimeMillis
是用来返回当前时间的,单位以毫秒,其值的粒度取决于底层操作系统.它是与在1970年1月1日UTC
之间的当前时间和午夜之间的差异.
UTC
世界时
阅读
api,类Date
java.lang.Object-> java.util.Date
实现的接口:
Serializable, Cloneable, Comparable<Data>
从以下版本开始JDK1.0
public class Date extends Objectimplements Serializable, Cloneable, Comparable<Data>
Date
有两个附加功能,可以将日期解释为年,月,日,小时,分钟和第二个值
,允许格式化和解析日期字符串。但是,从JDK 1.1
开始, 要用Calendar
类实现在日期和时间字段之间进行转换,并且使用DateFormat
类应用于格式化和解析日期字符串, Date
中的相应的方法被弃用。
Calendar DateFormat
一天 = 24 * 60 * 60 = 86400
秒
年,月,日期,小时,分钟,秒值
年份从整数 y - 1900
表示。
月份从 0到11
的整数表示。0是1月,1是2月,等等;
日期从 1到31
的整数表示。
小时由0到23
的整数表示。
分钟由0到59
的整数表示。
一般以0到59
的整数表示。
秒针由0到61
的整数表示。
注意
Date
构造方法:
Date() 用来分配Date对象,并且进行初始化对象,时间测量到最近的毫秒Date(long, date) 用来分配Date对象,并且进行初始化对象,时间为标准基准时间以后指定毫秒数
使用Date
,创建日期对象,封装对象,进行解析毫秒值
import java.text.DateFormat;import java.util.Date;public class DateDemo { public static void main(String[] args) { long time = System.currentTimeMillis(); System.out.println(time); Date date = new Date(time); System.out.println(date.toString()); } }
toString()
为将Date
对象转换为String
的形式dow mon dd hh:mm:ss zzz yyyy
注意
日期格式化
DateFormat
DateFormat
是日期和时间格式化子类的抽象类,常用SimpleDateFormat
,格式化为日期到文本,解析为文本到日期,并且此类提供了很多类方法,(静态方法)
格式化分很多风格分别为,FULL,LONG,MEDIUM和SHORT.
java.text类 DateFormatjava.lang.Object-> java.text.Format-> java.text.DateFormatpublic abstract class DateFormat extends Format
DateFormat
提供了很多类方法,不需要子类,只需要它提供的很多类方法,就可以进行格式化风格,DateFormat
为日期格式化对象,可以通过类方法得到日期格式器.
myString = DateFormat.getDateInstance().format(myDate);
DateFormat.format(Date date)
DateFormat.getDateInstance().format(myDate);
风格化:FULL、LONG、MEDIUM(默认风格)和 SHORT
long time = System.currentTimeMillis();Date date = new Date(time); DateFormat dateFormat = DateFormat.getDateInstance();String myString = dateFormat.format(date); System.out.println(myString);
风格化:
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL); dateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
Class DateFormat
注意
Demo
案例:
import java.text.DateFormat;import java.util.Date;public class DateDemo { public static void main(String[] args) { long time = System.currentTimeMillis(); Date date = new Date(time); System.out.println(date.toString()); DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL); dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); String mydate = dateFormat.format(date); System.out.println(mydate); } }
IO流
Input Output
IO
流是用来处理设备之间的数据传输,在Java
中数据的传输是通过流的方式进行操作的,在Java
中提供了java.io
包用于操作流的对象.
File
类
File
类是将文件或者文件夹进行封装成对象的,为了方便对文件或者文件夹进行操作.
什么是递归呢?
递归就是自己调用自己,就是可以把某功能重复使用.
输入流为读,输出流为写
要输入,进行读入
要输出,进行写出
流可以分字节流和字符流哦~
字节流的抽象类:
InputStream ,OutputStream 子类FileInputStream 子类FileOutputStream
字符流的抽象列:
Reader , Writer 子类FileReader 子类FileWriter
IO
流的操作,导入IO
包,进行IO
异常处理,对流进行关闭
字符流FileWriter 操作:
我们要进行创建流对象,就是建立数据存放的文件
FileWriter fw = new FileWriter("dashu.txt");
然后进行写入的方法,一定要用write()
方法,将数据写入:
fw.write("简书作者: 达叔小生");
最后一定不要忘记,关闭流资源哦~
fw.close()
这样就可以在文本中写入数据了,字符流创建文件.
字符流FileReader 操作:
首先我们要指定文件数据读取的对象,建立一个流对象:
FileReader fr = new FileReader("dashucoding.txt");
然后创建一个临时存放的数据的数组对象:
// 因为是字符char[] ch = new char[1024];
然后进行读取方法,要用到read()
方法,将流中的数据进行读取到数组中:
fr.read(ch);
最后一定不要忘记,关闭流资源哦~
fr.close()
FileReader
读取:
FileReader fr = new FileReader("dashucoding.txt");char[] ch = new char[1024];int len = 0;while((len=fr.read(ch)) != -1){ System.out.println(new String(ch,0,len)); }
高效率-字符流缓冲区的帮助
有了缓冲区可以对数据的读和写的效率大大提高了.
BufferedWriter BufferedReader
BfferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
转换流-
InputStreamReader,OutputStreamWriter
转换流是字符流和字节流之间转换的桥梁,方便了字符流和字节流之间的操作
转换流的应用场景为当字节流中的数据都是字符时,可以转成字符流进行操作,更加方便快捷.
字符流体系
字符流 (Reader, Writer) (Reader -> BufferedReader, InputStreamReader) (Writer -> BufferedWriter, OutputStreamWriter ) FileReader, FileWriter
字节流体系
字节流 (InputStream, OutputStream) (InputStream -> FileInputStream, FilterInputStream) (OutputStream -> FilterOutputStream, FileOutputStream) BufferedInputStream, BufferedOutputStream
抽象类Calendar
从JDK1.1
开始,使用Calendar
类实现日期和时间字段之间的转换,然后使用DateFormat
类来进行格式化和解析日期字符串.
java.util 类 Calendar java.lang.Object -> java.util.Calendarpublic abstract class Calendar extends Objectimplements Serializable, Cloneable, Comparable<Calendar>
Calendar
提供了一些字段:
YEAR, MONTH, DAY_OF_MONTH, HOURCalendar.YEARCalendar.MONTHCalendar.DAY_OF_MONTHCalendar.HOUR
操作字段:set(),add()和roll(),
使用这些方法可以更改日历字段,获取和设置日历字段值,可以调用set()
方法,可以使用get,getTimeInMillis,getTime,add和roll
进行调用.
Calendar
提供了一个类方法getInstance:
Calendar rightNow = Calendar.getInstance();// 获取日历对象
从JDK1.1
开始就使用这类,不使用Date
类了,Calendar
案例:
import java.util.Calendar;public class DateDemo { public static void main(String[] args) { Calendar c = Calendar.getInstance(); // System.out.println(c); // 获取年 System.out.println(c.get(Calendar.YEAR)); } }
搞定年月日
import java.util.Calendar;public class DateDemo { public static void main(String[] args) { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+1; int day = c.get(Calendar.DAY_OF_MONTH); System.out.println(year+"年"+month+"月"+day+"日"); } }
搞定星期
import java.util.Calendar;public class DateDemo { public static void main(String[] args) { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+1; int day = c.get(Calendar.DAY_OF_MONTH); String week = getWeek(c.get(Calendar.DAY_OF_WEEK)); System.out.println(year+"年"+month+"月"+day+"日"+week); } public static String getWeek(int i) { if(i<0 || i>7){ throw new RuntimeException(i+"没有对应的星期"); } String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; return weeks[i]; } }
作者:达叔小生
链接:https://www.jianshu.com/p/887ee6fcb44b