1. 利用输入输出流来复制文件

步骤:1.构造文件字节输入输出流  2.创建一个字节数组,用来指定每次复制的字节大小   3.输入流从源文件读取字节,输出流将字节写入文件

  1. import java.io.FileInputStream;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5.  
  6. public class JavaIO {
  7. public static void main(String[] args) throws IOException {
  8. FileInputStream fis = new FileInputStream(
  9. "E:\\Download\\12.txt");
  10. FileOutputStream fos = new FileOutputStream("F:\\22.txt");
  11. byte[] b = new byte[1024000];
  12. int n;
  13. while ((n = fis.read(b)) != -1) {
  14. fos.write(b, 0, n);
  15. }
  16. fis.close();
  17. fos.close();
  18. }
  19. }

fis.read(b)的作用是从源文件最多读取b.length字节的数据送给b数组,返回的是读入的字节总数。

本例中b.length的长度指定为1024000,当最后一次不足1024000,例如只剩下5000字节时,返回的就是5000,此时所有字节读取完毕。下一次读入时由于已到达文件末尾,返回-1。

fos.write(b, 0, n)意思是将byte数组从偏移量0开始的n个字节写入文件输出流。

程序结束后记得要关闭输入输出流。

2. 计算两个日期之间相差间隔天数

法一:直接通过计算两个日期的毫秒数,他们的差除以一天的毫秒数,即可得到我们想要的两个日期相差的天数。 

  1. public static long getQuot(String startdate, String enddate) {
  2. long m_intervalday = 0;//初始化时间间隔的值为0
  3. //使用的时间格式为yyyy-MM-dd
  4. SimpleDateFormat m_simpledateformat = new SimpleDateFormat("yyyy-MM-dd");
  5. try {
  6. //创建两个Date对象
  7. Date date1 = m_simpledateformat.parse(startdate);
  8. Date date2 = m_simpledateformat.parse(enddate);
  9. m_intervalday = date2.getTime() - date1.getTime();//计算所得为毫秒数
  10. m_intervalday = m_intervalday / 1000 / 60 / 60 / 24;//计算所得的天数
  11. } catch (ParseException e) {
  12. e.printStackTrace();
  13. }
  14. return m_intervalday;
  15. }
  1. //简写
  2. public static int differentDaysByMillisecond(Date date1,Date date2) {
  3. int days = (int) ((date2.getTime() - date1.getTime()) / (1000*3600*24));
  4. return days; }  

法二:

通过Calendar类的日期比较。注意:这里需要考虑一下:

  • 日期是跨年份的,如一个是2012年,一个是2015年的
  • 年份是分闰年和平年的,各自的天数不同
  1. public static int differentDays(Date date1,Date date2){
  2. Calendar cal1 = Calendar.getInstance();
  3. cal1.setTime(date1);
  4. Calendar cal2 = Calendar.getInstance();
  5. cal2.setTime(date2);
  6. int day1= cal1.get(Calendar.DAY_OF_YEAR);
  7. int day2 = cal2.get(Calendar.DAY_OF_YEAR);
  8. int year1 = cal1.get(Calendar.YEAR);
  9. int year2 = cal2.get(Calendar.YEAR);
  10. if(year1 != year2){ //同一年
  11. int timeDistance = 0 ;
  12. for(int i = year1 ; i < year2 ; i ++){
  13. if(i%4==0 && i%100!=0 || i%400==0) //闰年
  14. { timeDistance += 366; }
  15. else //不是闰年
  16. { timeDistance += 365; } }
  17. return timeDistance + (day2-day1) ; }
  18. else //不同年
  19. { System.out.println("判断day2 - day1 : " + (day2-day1));
  20. return day2-day1; } }

法二测试代码:

  1.  String dateStr = "2013-1-1 21:21:28";
     String dateStr2 = "2015-1-2 1:21:28";
  2. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3. SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  4. try {
  5. Date date2 = format.parse(dateStr2);
  6. Date date = format.parse(dateStr);
  7. System.out.println("两个日期的差距:" + differentDays(date,date2));
  8. } catch (ParseException e) {
  9. e.printStackTrace();
  10. }

zrrx笔试题(一)——文件复制&日期天数差的更多相关文章

  1. [置顶] Java编程笔试题之一 ----文件操作

    题目:给定一个文件和一个字符串,判断文件是否包含该字符串,如果包含,请打印出包含该字符串的行号以及该行的全部内容. 思路: ①使用缓冲流(BufferedReader)读取文件,定义初始行号为0.   ...

  2. js日期天数差

    var s1 = "2007-01-01"; var s2 = "2007-12-31"; s1 = s1.replace(/-/g, "/" ...

  3. JS 计算日期天数差

    function dayDiffer(startDate,endDate){ console.info((endDate.getTime - startDate.getTime())/(24*60*6 ...

  4. js计算日期天数差-2013-9-26

    function daymath(sdate, edate) {             var startdate = sdate;             var enddate = edate; ...

  5. 算法笔试题整理——升级蓄水池 && 字符串数字表达式计算值 && 求旅游完所有景点需要的最少天数 && 宝箱怪

    1. 小米笔试题——升级蓄水池 题目描述: 在米兔生活的二维世界中,建造蓄水池非常简单. 一个蓄水池可以用n个坐标轴上的非负整数表示,代表区间为[0-n]范围内宽度为1的墙壁的高度. 如下图1,黑色部 ...

  6. 【笔试题】Java 中如何递归显示一个目录下面的所有目录和文件?

    笔试题 Java 中如何递归显示一个目录下面的所有目录和文件? import java.io.File; public class Test { private static void showDir ...

  7. java笔试题: ——将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面

    将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面 import java.io.*; import java.util.zip.ZipEntry; import java.uti ...

  8. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg

    package com.swift; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; i ...

  9. 【第一期百题计划进行中,快来打卡学习】吃透java、细化到知识点的练习题及笔试题,助你轻松搞定java

    [快来免费打卡学习]参与方式 本期百题计划开始时间:2022-02-09,今日打卡题已在文中标红. 0.本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录 1.以下练习题,请用对应的知识点 ...

随机推荐

  1. POJ ???? Monkey King

      题目描述 Once in a forest, there lived N aggressive monkeys. At the beginning, they each does things i ...

  2. 【差分约束系统】【最短路】【spfa】CDOJ1646 穷且益坚, 不坠青云之志。

    求一个有n个元素的数列,满足任意连续p个数的和不小于s, 任意连续q个数的和不大于t. 令sum[i]表示前i项的和(0<=i<=n,sum[0]=0) 那么题目的条件可转化为: sum[ ...

  3. 使用redis时出现java.util.ArrayList cannot be cast to java.lang.Long

    java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long at redis.clients. ...

  4. shell-网上lnmp一键安装讲解

    shell-网上lnmp一键安装讲解 #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/b ...

  5. 基于tiny4412的Linux内核移植(支持device tree)(一)

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  6. 【spring boot】使用定时任务@Scheduled 报错:Encountered invalid @Scheduled method 'dealShelf': Cron expression must consist of 6 fields (found 7 in "0 30 14 * * ? *")

    在spring boot中使用使用定时任务@Scheduled 报错: org.springframework.beans.factory.BeanCreationException: Error c ...

  7. 十大流行linux

    你可曾知道Linux的魅力或威力来自哪里?那就是,由于众多发行版百花齐放,Linux的阵营日益壮大,每一款发行版都拥有一大批用户,开发者自愿为相关项目投入精力.Linux发行版可谓是形形色色,它们旨在 ...

  8. WebSocket 是什么原理?为什么可以实现持久连接?(转载)

    本文转载自知乎,来源如下: 作者:Ovear链接:https://www.zhihu.com/question/20215561/answer/40316953来源:知乎著作权归作者所有.商业转载请联 ...

  9. Ceph源码解析:概念

    Peering:一个PG内的所有副本通过PG日志来达成数据一致的过程.(某PG如果处于Peering将不能对外提供读写服务) Recovery:根据Peering的过程中产生的.依据PG日志推算出的不 ...

  10. Servlet拦截静态图片的解决方案

    一.现象 建立一个使用Freemarker的Web Project程序. Product.ftl中的代码为: <!DOCTYPE html PUBLIC "-//W3C//DTDHTM ...