当前位置: 首页 > news >正文

java IO教程《三》

缓冲区流讲解(Buffered)

什么是缓冲区?

缓冲流,也叫高效流,是对4个基本的File流的增强,所以也是4个流,按照数据类型分类:

  • 字节缓冲流:BufferedInputStream,BufferedOutputStream
  • 字符缓冲流:BufferedReader,BufferedWriter

缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。

缓冲技术的原理?

加载过程

整个过程可以形容成一个快递小哥,开始时候自行车送快递,一趟只能送一个,但是后来老板看他们太幸苦了,给他们配备了一辆五菱宏光,一次可以送好几十个,这就大大提高了效率。

缓冲区流采用装饰者模式去包装文件流跟字符流

字节流缓冲区

BufferedInputStream

Java BufferedInputStream类用于从流中读取信息。它内部使用缓冲机制来提高性能。BufferedInputStream的要点是:

  • 当跳过或读取流中的字节时,内部缓冲区会自动从包含的输入流中重新填充,每次填充许多字节。

  • 创建BufferedInputStream时,会创建一个内部缓冲区数组。

构造函数:

构造函数说明
BufferedInputStream(InputStream IS)它创建新的缓冲输出流,用于将数据写入指定的输出流。
BufferedInputStream(InputStream IS, int size)创建新的缓冲输出流,用于将数据写入具有指定缓冲区大小的指定输出流。

方法:

方法说明
int available()它将指定的字节写入缓冲输出流。
int read()它从给定的偏移量开始,将指定字节输入流中的字节写入指定的字节数组
int read(byte[] b, int off, int ln)刷新缓冲区
void close()刷新缓冲区
void reset()刷新缓冲区
long skip(long x)刷新缓冲区

BufferedOutputStream

Java BufferedOutputStream类用于缓冲输出流。它在内部使用缓冲区来存储数据。与直接将数据写入流相比,它提高了效率。因此,它使性能快速。要在OutputStream中添加缓冲区,请使用BufferedOutputStream类。让我们看看在OutputStream中添加缓冲区的语法:

构造函数:

构造函数说明
BufferedOutputStream(OutputStream os)它创建新的缓冲输出流,用于将数据写入指定的输出流。
BufferedOutputStream(OutputStream os, int size)创建新的缓冲输出流,用于将数据写入具有指定缓冲区大小的指定输出流。

方法:

方法说明
void write(int b)它将指定的字节写入缓冲输出流。
void write(byte[] b, int off, int len)它从给定的偏移量开始,将指定字节输入流中的字节写入指定的字节数组
void flush()刷新缓冲区

字符流缓冲区

BufferedWriter

Java BufferedWriter类用于为Writer实例提供缓冲。写入速度很快。继承Writer类。缓冲字符用于提供对单个数组、字符和字符串的有效写入。

构造函数:

构造函数说明
BufferedWriter(Writer wrt)它用于创建使用输出缓冲区的默认大小的缓冲字符输出流。
BufferedWriter(Writer wrt, int size)它用于创建使用指定大小的输出缓冲区的缓冲字符输出流。

方法:

方法说明
void newLine()通过编写行分隔符来添加新行。
void write(int c)用于写入单个字符。
void write(char[] cbuf, int off, int len)用于写入字符数组的一部分
void write(String s, int off, int len)用于写入字符串的一部分。
void flush()刷新输入流。|
void close()关闭缓冲区。

BufferedReader

Java BufferedReader类用于从基于字符的输入流中读取文本。可以通过readLine()方法逐行读取数据。读取速度很快。继承了Reader类。

构造函数:

构造函数说明
BufferedReader(Reader rd)它用于创建使用输入缓冲区的默认大小的缓冲字符输出流。
BufferedReader(Reader rd, int size)它用于创建使用指定大小的缓冲区的缓冲字符输入流。

方法:

方法说明
int read()读取一个字节。
int read(char[] cbuf, int off, int len)用于将字符读入数组的一部分。
boolean markSupported()用于测试输入流对标记和重置方法的支持。
String readLine()用于读取一行文本。
boolean ready()用于测试输入流是否准备好读取。|
long skip(long n)跳过字节数
boolean ready()用于测试输入流是否准备好读取。
void reset()它将流重新定位到上次在此输入流上调用mark方法的位置。
void mark(int readAheadLimit)用于标记流中的当前位置。
void close()它关闭输入流并释放与该流关联的任何系统资源。

实战

读取文件内容然后写入另外一个文件

字节缓冲区流

 public static void main(String[] args) {//创建一个字节流,用于读取当前目录下的source文件夹中的压缩文件InputStream in = new FileInputStream("/home/lumeng/practise_lum/uml_tmp_file.rar");//创建一个文件字节输出流,用于将读取的数据写入test目录OutputStream out = new FileOutputStream("/home/lumeng/practise_lum/test/uml_tmp_file.rar");byte[] buff = new byte[1024];  //定义一个字节数组,作为缓冲区int len; //定义一个int类型的变量len,记住每次读取的一个字节long begintime = System.currentTimeMillis();//获取拷贝文件前的系统时间while ((len = in.read(buff)) != -1) { //读取一个字节并判断是不是读到文件结尾out.write(buff, 0, len);//从第一个字节开始,向文件写入len个字节}long endtime = System.currentTimeMillis();//获取文件拷贝结束时的系统时间System.out.println("拷贝文件所消耗的时间是:" + ((endtime - begintime) / 1000) + "秒");in.close();out.close();}

在拷贝的过程中,使用while循环语句,逐渐实现字节文件的拷贝,每循环一次,就从文件读取若干字节填充字节数组,并通过len记住读入数组的字节数,然后从数组的第一个字节开始,将len字节依次写入文件。循环往复,当len的值为-1时,说明已经读到了文件的末尾,循环结束,整个拷贝过程结束。我们可以看出这种操作比单纯字节留拷贝快很多。

字符缓冲区流

 public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new FileReader("D:\\b.txt"));BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\b.txt"));String len =null;while ((len = br.readLine())!=null){//注意此处readLine的默认值是null区别read()bw.write(len);//bw.write("\r\n");  原先手动添加换行bw.newLine();      // 调用换行方法}br.close();bw.close();}

识别下方二维码!回复: 入群 ,扫码加入我们交流群!

点赞是认可,在看是支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-2740.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

elementUI-Tree 树形控件的使用

elementUI-Tree 树形控件的使用 实现效果: 控件的官方使用说明 控件要求返回的数据结构 {"success": true,"code": 20000,"message": "成功","data": {"items": [{"id": "1394579386…...

Labview需求(部分)

本人从事工控行业多年,有一些资源,目前labview的单子干不过来了,想找几个靠谱的labview工程师跟我合作,想做兼职,接单的labview工程师可以私聊我,另外我有一些项目还需要跟单片机工程师,plc工程师,fpga工程师合作,欢迎大家找我合作!以下是手里比较着急的项目,需要外包 需求1&am…...

2021java1年经验公司面试真题

1面我就省略了,主要就是看你的以前工作情况,以前工作内容能不能清晰表达,还有一些简单的java基础问题,大概20多分钟。二面就是40分钟基础,20分钟业务,10分钟个人情况。下面是二面问题 1.自我介绍 做一下自…...

Unity基础之C#核心篇笔记4:多态

Unity基础之C#核心篇笔记4:多态多态1.多态的概念2.解决的问题3.多态的实现4.总结抽象类和抽象方法1.抽象类2.抽象函数3.总结4.练习题接口1.接口的概念2. 接口的申明3.接口的使用4.接口可以继承接口5.显示实现接口6.总结7.练习题密封方法1.密封方法基本概念2.实例3.总…...

LeetCode每日一题 - 有多少小于当前数字的数字

题目&#xff1a; 给你一个数组 nums&#xff0c;对于其中每个元素 nums[i]&#xff0c;请你统计数组中比它小的所有数字的数目。 换而言之&#xff0c;对于每个 nums[i] 你必须计算出有效的 j 的数量&#xff0c;其中 j 满足 j ! i 且 nums[j] < nums[i] 。 以数组形式返回…...

用Python爬取彼岸图网图片

用Python爬取彼岸图网图片 *使用了 四个模块 import time import requests from lxml import etree import os 没有的话自行百度安装。 #encoding utf-8 import time import requests from lxml import etree import os# http://www.netbian.com/ 爬虫 if __name__ __mai…...

第k个数(快速选择)

算法思路 快速选择&#xff1a; 1.即任意选一个数&#xff0c;将数组划分为二。 2.最终根据该数所在的位置&#xff0c;即第&#xff1f;大&#xff0c;选择第k大的数字所在区间进行划分。 时间复杂度分析&#xff0c;第一次划分n,下一次划分期望n/2&#xff0c;n/4…累加和小…...

yolov5 detect.py报错

新手求助 yolov5训练了自己的数据集后&#xff0c;test没问题&#xff0c;但是运行detect.py就报错了&#xff0c;一直找不到问题所在&#xff0c; 求大佬指点指点...

DEX 争霸战火升级,BabySwap 会否成为下一代黑马?

在 AMM机制大力推动下&#xff0c;DEX的群雄争霸比预想中来得要快且凶猛。伴随着诸如高盛等主流资本逐步认可DeFi 的意义&#xff0c;在真正的去中心化金融爆发的前夜&#xff0c;可以说谁抢占了DEX 红海的先机&#xff0c;谁就赢得了未来。 从早期以太坊的Uniswap和DoDo&…...

flutter 常用的第三方组件

引用文章链接&#xff1a; https://www.jianshu.com/p/a523e5f131b2 1、格式化日期时间组件&#xff1a;https://pub.dev/packages/date_format 2、日期选择组件&#xff1a;https://pub.dev/packages/flutter_cupertino_date_picker 3、轮播图组件&#xff1a;https://pub.…...

Android面试回忆录:帮助程序员提高核心竞争力的30条建议,真香!

**新技术层出不穷&#xff0c;去年kotlin到如今Flutter&#xff0c;技术迭代&#xff0c;你是否会变得固步自封&#xff1f;**那么看本篇文章帮你解决问题&#xff0c;让你知道怎么样学习&#xff0c;学习那些技术点才能不被时代的迭代快速淘汰&#xff01; 首先&#xff0c;先…...

2021-05-30解决centos+宝塔面板,FTP传输421 Too many connections问题错误

解决centos宝塔面板&#xff0c;FTP传输421 Too many connections”问题错误 1、首先连入服务器 在/www/server/pure-ftpd/etc下&#xff0c;找到pure-ftpd.conf 2、vim pure-ftpd.conf 没有vim的&#xff0c;用其他编辑软件也可以 3、找到 #Maximum number of sim clients wit…...

RK3399 DDR频率修改

RK3399 DDR频率修改 一、DDR当前频率获取与可调节范围 1、获取当前DDR频率、可调值、容量 cat /sys/class/devfreq/dmc/cur_freq2、查看DDR频率可调节的值 cat /sys/class/devfreq/dmc/available_frequencies3、获取DDR容量 cat /proc/meminfo二、DDR测试定频 1、因为RK3…...

javascript正则表达式常用合集

javascript正则表达式常用的合集 参考网址 {n}: n 是一个正整数&#xff0c;匹配了前面一个字符刚好出现了 n 次 {n,}: n是一个正整数&#xff0c;匹配前一个字符至少出现了n次 {n,m}: n 和 m 都是整数。匹配前面的字符至少n次&#xff0c;最多m次。如果 n 或者 m 的值是0&…...

qApp加载qss技巧

使用Qt加载qss样式&#xff0c;一般操作是读取文件&#xff0c;通过setStyleSheet设置 但是qApp只需如下&#xff1a; qApp->setStyleSheet("file:///:/test.qss");//只适用于qApp...

发现一款好用到爆的数据库工具 - DataGrip(就是耗内存)

作者&#xff1a;Atzuge cnblogs.com/zuge/p/7397255.html 最近看到一款数据库客户端工具&#xff0c;DataGrip&#xff0c;是大名鼎鼎的JetBrains公司出品的&#xff0c;就是那个出品Intellij IDEA的公司。 - 就是耗内存 DataGrip是一款数据库管理客户端工具&#xff0c;方便…...

Java 类加载器(ClassLoader)的实际使用场景有哪些?

什么是classloader classloader顾名思义&#xff0c;即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存&#xff0c;并对数据进行检验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这就是虚拟机的类加载机制。了解java的类加…...

Bad owner or permissions on C:\\Users\\USER/.ssh/config on Windows

Bad owner or permissions on C:\Users\USER/.ssh/config 问题描述 由于使用vscode远程连接服务器突然新增了C:\Users\USER/.ssh/config &#xff0c;再powershell/cmd下面使用openssh&#xff08;windows自带&#xff09;连接服务器会出现Bad owner or permissions on C:\\U…...

React方向的前端面试题

1、React的生命周期&#xff1f; React中只有类组件有生命周期可言。 其中包含三个状态&#xff1a; Mounting&#xff1a;此时已经插入了真实的DOM&#xff1b; Updating&#xff1a;正在被重新渲染&#xff1b; Unmounting&#xff1a;已经移出真实的DOM。 生命周期的方…...

理解“same-site“ 和 “same-origin“

Understanding "same-site" and "same-origin" 作者&#xff1a;Eiji Kitamura 译者&#xff1a;weixsun 原文&#xff1a;Understanding "same-site" and "same-origin" "same-site" and "same-origin" are …...

springcloudAlibaba nacos配置(解决jmenv.tbsite.net错误)

错误信息&#xff1a; Failed to instantiate [com.alibaba.nacos.core.cluster.ServerMemberManager]: Constructor threw exception; nested exception is ErrCode:500, ErrMsg:jmenv.tbsite.net 数据库配置&#xff1a; 数据库配置&#xff1a; ### Count of DB: db.num1 ##…...

AndroidUtilCode 最强大的工具类

一、前言&#xff1a; AndroidUtilCode 是一个强大易用的安卓工具类库&#xff0c;它合理地封装了安卓开发中常用的函数&#xff0c;具有完善的 Demo 和单元测试&#xff0c;利用其封装好的 APIs 可以大大提高开发效率&#xff0c;如今它主要包括两部分模块&#xff0c;其一是…...

VIA标注工具_一款在线的数据标注工具,支持矩形,多边形,关键点

https://www.robots.ox.ac.uk/~vgg/software/via/via_demo.html 界面如下图所示&#xff1a;...

学习响应式BootStrap来写融职教育网站,Bootsrtap第三天nav布局

nav导航布局 <!DOCTYPE html> <html lang"zh_CN"> <head><meta charset"UTF-8"><title>融职教育</title><!-- 移动设备优先--><meta name"viewport" content"widthdevice-width, initial…...

第一章 gitee学习之安装

安装链接链接 gitee下载链接: https://git-scm.com/downloads. 有三种系统可供选择&#xff0c;选择想要的即可&#xff0c;我是windows64位的&#xff1a;下载好了后直接一直下一步安装即可&#xff0c;安装完成后右键菜单如下图&#xff1a; 如上&#xff0c;git安装完毕...

基于域名访问网站1(作业)

搭建一个基于http://www.zuoye.com:22222访问的web网站&#xff0c;网站首页在/www/http/&#xff0c;内容为zuoye 结果 过程&#xff1a; 创建网页的根目录&#xff0c;并编辑网页内容为zuoye 编辑/etc/httpd/conf.d/zuoye.conf 关闭防火墙 关闭selinux 重启httpd 编辑/…...

外连接查询与内连接的不同

外连接的语法如下&#xff1a; SELECT 字段名称 FROM 表名1 LEFT|RIGHT|FULL| [OUTER] JOIN 表名2ON 表名1.字段名1表面2.字段名2 左外连接 左外连接的结果集包含左表的所有记录和右表中满足连接条件的记录&#xff0c;结果集中那些不符合连接条件的来源于右表的列值为null。…...

写给互联网大厂员工的真心话,面试必问

越来越多的人在提“移动端的下半场”、“Android 开发的焦虑”之类的&#xff0c;也有人在喊“技术天天在变&#xff0c;学也学不完”&#xff0c;“昨天 Kotlin 今天 Flutter”。其实我却认为&#xff0c;如果你技术达到了一定程度&#xff0c;你无需太过在意这些。 移动端真…...

返利网拼团小程序,10人拼团7人返利

最火项目—拼团返利商城 你是否看过这样一则视频&#xff0c;全新模式的拼团小程序、半年20亿的销售神话&#xff01;现在它来了&#xff0c;拼团返利商城完整源码&#xff0c;上传即可使用&#xff0c;➕Liyeruly&#xff0c;包安装。 玩法介绍&#xff1a; 根据商品可自由…...

为什么基类析构函数一般写成虚函数

目录 析构函数不是虚函数&#xff1a; 析构函数是虚函数&#xff1a; 由于类的多态性&#xff0c;基类指针可以指向派生类的对象&#xff0c;如果删除该基类的指针&#xff0c;就会调用该指针指向的派生类析构函数&#xff0c;而派生类的析构函数又自动调用基类的析构函数&am…...

阿拉伯数字转换成中文或中文大写

第一种&#xff0c;数字转换成中文&#xff0c;在网上查的版本比如13&#xff0c;转换完成就变成一十三&#xff0c;非常之苦恼&#xff0c;经过我的一番搜查之后&#xff0c;发现在这个JS写的很完美&#xff0c;所以收藏以备后用! 先上效果图&#xff08;不会显示一十三哦&am…...

php将数字转换为汉字_php将阿拉伯数字转换成中文的方法

不说废话&#xff0c;直接上代码&#xff1a;function toChinaseNum($num){$char array("零","一","二","三","四","五","六","七","八","九");$dw array(""…...

关于Python的趋势都在这了, Python官方年度报告中文版

每年 Python 官方都会做一次年度报告&#xff0c;今年也不例外。这在 Python 社区算是一件大事了。 既然是官方出品的&#xff0c;那就意味着客观、中立、相对准确。如果你想了解 Python 的数据与现状、趋势与未来&#xff0c;可以说没有比这份报告更有用的信息了。 这次报告分…...

李开复:如何设计你的年度计划

1、选择一项可行的目标就好 人的习惯就是&#xff0c;当要求太多&#xff0c;其中有一项做不到&#xff0c;就可能全盘放弃。倒不如挑一件可行但有难度的去做&#xff0c;尤其是第一次。人总是需要靠着一些小小正面的成就感&#xff0c;慢慢建立自信。 2、设定目标的SMART原则 …...

2009日本年度汉字“新”我也投了一票

昨天&#xff0c;就是12月11日&#xff0c;日本的电视台播放了2009年度汉字揭晓节目&#xff0c;今年的年度汉字是“新”。我很得意的跟老公说&#xff0c;“怎么样&#xff0c;我猜对了吧&#xff0c;我对形势的概括能力还是很准滴~”。参加年度汉字投票是很偶然的机遇。11月7…...

[英语阅读]“变”当选日本2008年度汉字

Change voted Japans character of the year Worlds heritage Kiyomizu temple priest Seihan Mori puts the finishing touch on a caligraphy with Chinese character "hen", meaning "change" at his temple in Kyoto. After helping Barack Obama swe...

2006年度汉字

詹膑发起了2006年度汉字的评选&#xff0c;我也参与一下吧。 对我而言&#xff0c;2006年度的汉字是“创”和“投”。 创&#xff0c;创业的创。 2005年的创业潮&#xff0c;到2006不仅没有下去&#xff0c;反而越来越热。加入这个行列的不仅有一些类似我这样的无名小卒&…...

【杂项】2020年年度报告

文章目录1.概述2.csdn年度报告2.自己的年度报告2.1 2019年计划2.2 2020年计划2.3 看了哪些书2.3.1 es相关2.3.2 flink相关2.3.3 kafka相关2.3.4 yarn相关2.3.5 spring boot相关2.3.6 MySLQ相关2.3.7 java相关&#xff08;重点&#xff09;2.4 视频相关3. 2021年计划1.概述 为什…...

植物大战僵尸中文年度版

中文年度版 基址:007794f8阳光8685578金钱95050 冒险模式9504C 智慧树95011C 其他模式 91c 花肥 950 220 杀虫剂950 224 巧克力950 250 树肥950 258 复制代码 鼠标状态 868 150 30 植物栏格数:868 15c 24 植物当前冷却值:868 15c 4c 植物冷却时间:868 15c 50 植物栏列表:868 15…...

2008年度汉字——衰

1、盛的反面是衰。本来以为2008&#xff0c;应该是一个盛字的&#xff01;本来以为&#xff0c;现在应该处在盛世的。 2、运气极坏&#xff0c;是衰&#xff01;这一年的中国&#xff0c;灾难极多&#xff0c;运气极坏&#xff01; 3、经济的衰退&#xff0c;简直是显而易见&…...

“奔”,2006年度汉字

去年我的选择是“难”。今年也不写自己的解释了&#xff0c;反正就这么一个字&#xff0c;也不必解释那么多道道。...

LocalDateTime类对时间的处理

1.获取时间&#xff1a; LocalDateTime time LocalDateTime.now(); 2.获取相对于当前时间的前几天后几天的时间&#xff0c;可以用来做定时任务用&#xff1a; LocalDateTime changeTime time.plusDays(-1); 3.将时间格式化成想要的格式&#xff08;yyyy-MM-dd HH:mm:ss&a…...

python对时间序列的DataFrame数据按时间段进行切分求和

import pandas as pd import numpy as np data pd.read_csv(C:\\Users\\1701\Desktop\\data.csv,index_col False) data[RecTm] pd.to_datetime(data[time])#time表示代表时间的那一列列名 data.set_index(RecTm,inplace True)#把时间列作为索引 ticks data.ix[:] bars …...

Java对日期时间的一些基本操作

在 JDK 8 之前&#xff0c;Java 语言为我们提供了两个类用于操作时间&#xff0c;它们分别是&#xff1a;java.util.Date 和 java.util.Calendar&#xff0c;但在 JDK 8 的时候为了解决旧时间操作类的一些缺陷&#xff0c;提供了几个新的类&#xff0c;用于操作时间和日期&…...

oracle对时间范围比较的语句

时间在数据库存储的方式有很多种&#xff0c;但主要以date为主&#xff0c;下面以oracle为例 一般在数据库语句中直接写某个时间条件例如&#xff1a;c_datetime< ‘2014-08-06’或者between time1 and time2是会出错 比较经典的错误为ORA-01861: literal does not match …...

Sqlite数据库对时间进行比较SQL语句

开发工作&#xff0c;在于不断积累&#xff0c;总结经验&#xff0c;持续学习。 最近项目中有这样的需求&#xff1a; 1、删除当前月份前三个月消息&#xff08;如本月是10月删除7、8、9三个月的消息只保存本月消息&#xff09;。 2、更新非本月消息为已读消息&#xff08;如…...

C#中获取当前时间,及处理时间(对时间进行加减)

1.获取当前的时间&#xff0c;并将时间格式化成为字符串 DateTime dtDatetime.Now; string strdt.ToString(); //这是最直接的转化方法 string str2dt.ToString("yyy-MM-dd HH:mm:ss"); 2.获取年、月、日、时、分、秒等 DateTime dtDateTime.Now; …...

python中利用ARIMA模型对时间序列问题进行预测(以洗发水销售预测为例)

ARIMA模型&#xff0c;全称为自回归积分滑动平均模型&#xff08;Autoregressive Integrated Moving Average Model&#xff09;&#xff0c;是由博克思(Box)和詹金斯(Jenkins)于20世纪70年代初提出的一种时间序列预测方法。ARIMA模型是指在将非平稳时间序列转化为平稳时间序列…...

python list 对时间排序小结。

python list 排序比较简单。但是对时间排序有时可能会比较麻烦一点&#xff0c;对时间的大致思想是对时间字符串进行格式化。然后进行排序。 第一种排序方法是按照https://www.the5fire.com/python-sort-dict-in-list-by-time.html 的方法进行排序。 第二种排序方法比较简单…...

一文带你搞懂pandas中的时间处理(详细)

目录 1、pandas中6个时间相关的类   2、Timestamp类     1&#xff09;查看时间列&#xff0c;是str字符串列&#xff0c;还是时间格式列     2&#xff09;使用pd.to_datetime()将字符串&#xff0c;转换为日期格式     3&#xff09;Timestamp类只能表示1677年…...