api进阶Day3使用文件流对文件进行复制、使用块读写一组字节,使用byte数组提高读写的效率、返回当前时间。()

  本篇文章为你整理了api进阶Day3使用文件流对文件进行复制、使用块读写一组字节,使用byte数组提高读写的效率、返回当前时间。()的详细内容,包含有 api进阶Day3使用文件流对文件进行复制、使用块读写一组字节,使用byte数组提高读写的效率、返回当前时间。,希望能帮助你了解 api进阶Day3使用文件流对文件进行复制、使用块读写一组字节,使用byte数组提高读写的效率、返回当前时间。。

   这里是一名刚刚毕业的菜鸡后端,目前正在加强学习,备战工作

  这里是我的gitee仓库链接,如需要欢迎大家使用

  Java基础知识

  https://gitee.com/lui-w/jsd2206-se.git

  Api的基础学习

  https://gitee.com/lui-w/api-stude.git

  SpringBoot基础学习

  https://gitee.com/lui-w/springboot.git

  
public class CopyDemo {
 

  public static void main(String[] args) throws IOException {
 

  // FileInputStream fis = new FileInputStream("image.jpg");
 

  // FileOutputStream fos = new FileOutputStream("image_cp.jpg");
 

  FileInputStream fis = new FileInputStream("01.rmvb");
 

  FileOutputStream fos = new FileOutputStream("01_cp.rmvb");
 

  /
 

  image.jpg文件内容
 

  11001100 00110011 11110000 00001111 10101010 01010101 ...

  

 第1次调用:d = fis.read();

 

   11001100 00110011 11110000 00001111 10101010 01010101 ...

   ^^^^^^^^

   读取的字节

   d的2进制:00000000 00000000 00000000 11001100

   fos.write(d);

   d:00000000 00000000 00000000 11001100

   ^^^^^^^^

   写出的字节

   image_cp.jpg文件数据:

   11001100

   int d;//记录每次读取的字节内容

   long start = System.currentTimeMillis();//获取当前系统时间的毫秒值

   while( (d = fis.read()) != -1 ) {//若读取到了-1则应当停止循环,没有读取到-1则应当抄

   fos.write(d);

   long end = System.currentTimeMillis();//获取当前系统时间的毫秒值

   System.out.println("复制完毕,耗时:"+(end-start)+"ms");

   fos.close();

   fis.close();

  

 

  }
 

  }

  
public class CopyDemo2 {
 

  public static void main(String[] args) throws IOException {
 

  FileInputStream fis = new FileInputStream("01.rmvb");
 

  FileOutputStream fos = new FileOutputStream("01_cp.rmvb");
 

  /
 

  java.io.InputStream超类上定义了块读字节的操作:
 

  int read(byte[] data)
 

  一次性读取给定字节数组data总长度的字节量并将读取到的所有字节存入到该数组中。
 

  返回值表达本次实际读取的字节数量。如果返回值为整数-1则表示读取到了流的末尾。

  

 文件内容(6字节):

 

   11001100 00110011 11110000 00001111 10101010 01010101

   byte[] data = new byte[4];//4字节长的数组

   int len = 0;//记录每次实际读取的字节数

   第一次调用len = fis.read(data);

   一次性尝试从文件中读取data数组长度的字节量(本案例:4个字节)

   11001100 00110011 11110000 00001111 10101010 01010101

   ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^

   data:{11001100 00110011 11110000 00001111} 数组中存放的是本次读取的4字节内容

   len:4 这里的4是表达本次实际读取到了4个字节

   第二次调用len = fis.read(data);

   一次性尝试从文件中读取data数组长度的字节量(本案例:4个字节)

   11001100 00110011 11110000 00001111 10101010 01010101 文件末尾

   ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^

   本次实际仅读取到了2个字节

   data:{10101010 01010101 11110000 00001111}

   --本次读取的字节-----上次的旧数据---

   len:2 本次实际仅读取到了2个字节

   第三次调用len = fis.read(data);

   11001100 00110011 11110000 00001111 10101010 01010101 文件末尾

   ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^

   data:{10101010 01010101 11110000 00001111}

   --------没有变化,都是旧数据--------

   len:-1 表达文件末尾

  
void write(byte[] data,int offset,int len)

   一次性将给定的字节数组从下标offset处开始的连续len个字节写出

   byte[] data:{10101010 01010101 11110000 00001111}

   ^^^^^^^^ ^^^^^^^^

   fos.write(data,1,2):将data数组中从下标1开始的连续2个字节一次性写出

   文件数据:

   01010101 11110000

   //编译后:byte[] data = new byte[10240];

   byte[] data = new byte[1024*10];//10kb

   int len = 0;//记录每次实际读取的字节数

   long start = System.currentTimeMillis();

   while( (len = fis.read(data)) != -1 ){

   fos.write(data,0,len);

   long end = System.currentTimeMillis();

   System.out.println("复制完毕,耗时"+(end-start)+"ms");

   fis.close();

   fos.close();

  

 

  }
 

  }

  
public static void main(String[] args) {
 

  //返回的UTC时间,1970年1月1日 00:00:00到当前系统时间之间经过的毫秒
 

  long ms = System.currentTimeMillis();
 

  System.out.println(ms);
 

  long max = Long.MAX_VALUE;
 

  System.out.println("公元:"+(max/1000/60/60/24/365+1970));

  

}

 

  

 

  }

  以上就是api进阶Day3使用文件流对文件进行复制、使用块读写一组字节,使用byte数组提高读写的效率、返回当前时间。()的详细内容,想要了解更多 api进阶Day3使用文件流对文件进行复制、使用块读写一组字节,使用byte数组提高读写的效率、返回当前时间。的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: