zoukankan      html  css  js  c++  java
  • 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(); }
  • 相关阅读:
    07-2. A+B和C (15)
    07-1. 换个格式输出整数 (15)
    07-0. 写出这个数 (20)
    06-3. 单词长度(15)
    06-2. 字符串字母大小写转换(10)
    06-1. 简单计算器(20)
    06-0. 混合类型数据格式化输入(5)
    05-3. 求a的连续和(15)
    05-2. 念数字(15)
    05-1. 约分最简分式(15)
  • 原文地址:https://www.cnblogs.com/zjfjava/p/6713712.html
Copyright © 2011-2022 走看看