zrrx笔试题(一)——文件复制&日期天数差
2024-08-28 18:38:14
1. 利用输入输出流来复制文件
步骤:1.构造文件字节输入输出流 2.创建一个字节数组,用来指定每次复制的字节大小 3.输入流从源文件读取字节,输出流将字节写入文件
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class JavaIO {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream(
"E:\\Download\\12.txt");
FileOutputStream fos = new FileOutputStream("F:\\22.txt");
byte[] b = new byte[1024000];
int n;
while ((n = fis.read(b)) != -1) {
fos.write(b, 0, n);
}
fis.close();
fos.close();
}
}
fis.read(b)的作用是从源文件最多读取b.length字节的数据送给b数组,返回的是读入的字节总数。
本例中b.length的长度指定为1024000,当最后一次不足1024000,例如只剩下5000字节时,返回的就是5000,此时所有字节读取完毕。下一次读入时由于已到达文件末尾,返回-1。
fos.write(b, 0, n)意思是将byte数组从偏移量0开始的n个字节写入文件输出流。
程序结束后记得要关闭输入输出流。
2. 计算两个日期之间相差间隔天数
法一:直接通过计算两个日期的毫秒数,他们的差除以一天的毫秒数,即可得到我们想要的两个日期相差的天数。
public static long getQuot(String startdate, String enddate) {
long m_intervalday = 0;//初始化时间间隔的值为0
//使用的时间格式为yyyy-MM-dd
SimpleDateFormat m_simpledateformat = new SimpleDateFormat("yyyy-MM-dd");
try {
//创建两个Date对象
Date date1 = m_simpledateformat.parse(startdate);
Date date2 = m_simpledateformat.parse(enddate);
m_intervalday = date2.getTime() - date1.getTime();//计算所得为毫秒数
m_intervalday = m_intervalday / 1000 / 60 / 60 / 24;//计算所得的天数
} catch (ParseException e) {
e.printStackTrace();
}
return m_intervalday;
}
//简写
public static int differentDaysByMillisecond(Date date1,Date date2) {
int days = (int) ((date2.getTime() - date1.getTime()) / (1000*3600*24));
return days; }
法二:
通过Calendar类的日期比较。注意:这里需要考虑一下:
- 日期是跨年份的,如一个是2012年,一个是2015年的
- 年份是分闰年和平年的,各自的天数不同
public static int differentDays(Date date1,Date date2){
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
int day1= cal1.get(Calendar.DAY_OF_YEAR);
int day2 = cal2.get(Calendar.DAY_OF_YEAR);
int year1 = cal1.get(Calendar.YEAR);
int year2 = cal2.get(Calendar.YEAR);
if(year1 != year2){ //同一年
int timeDistance = 0 ;
for(int i = year1 ; i < year2 ; i ++){
if(i%4==0 && i%100!=0 || i%400==0) //闰年
{ timeDistance += 366; }
else //不是闰年
{ timeDistance += 365; } }
return timeDistance + (day2-day1) ; }
else //不同年
{ System.out.println("判断day2 - day1 : " + (day2-day1));
return day2-day1; } }
法二测试代码:
String dateStr = "2013-1-1 21:21:28";
String dateStr2 = "2015-1-2 1:21:28";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date2 = format.parse(dateStr2);
Date date = format.parse(dateStr);
System.out.println("两个日期的差距:" + differentDays(date,date2));
} catch (ParseException e) {
e.printStackTrace();
}
最新文章
- jdk源码分析PriorityQueue
- iOS开发--QQ音乐练习,歌词的展示,歌词的滚动,歌词的颜色变化
- iOS创建子工程
- 五 mybatis的SqlMapConfig.xml详解
- winfrom之动态控件生成以及保存动态空间的数据
- Ubuntu 13.10 中文字体设置
- 前端工程搭建NodeJs+gulp+bower
- SSH三者作用
- Noip2009提高组总结
- Preface
- JS window对象的top、parent、opener含义介绍 以及防止网页被嵌入框架的代码
- Socket 通讯原理
- 【C#】await &; Result DeadLock
- Feign性能优化注意事项
- poj1185 状态压缩经典题
- Android Service用法知识点的讲解
- Ansible and FileBeta
- zookeeper开发
- win8预装系统环境下安装win7问题以及双操作系统安装解决
- pycharm破解方法