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(); }

 

posted @ 2017-04-15 11:46  雪山上的蒲公英  阅读(350)  评论(0编辑  收藏  举报
/* 返回顶部代码 */