首页 > 代码库 > zrrx笔试题(一)——文件复制&日期天数差

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笔试题(一)——文件复制&日期天数差