zrrx笔试题——文件复制&日期天数差
Posted 雪山上的蒲公英
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zrrx笔试题——文件复制&日期天数差相关的知识,希望对你有一定的参考价值。
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(); }
以上是关于zrrx笔试题——文件复制&日期天数差的主要内容,如果未能解决你的问题,请参考以下文章