api进阶Day3使用文件流对文件进行复制、使用块读写一组字节,使用byte数组提高读写的效率、返回当前时间。
使用文件流对文件进行复制:
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
使用文件流完成文件的复制操作
/
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();
}
}
使用块读写一组字节,使用byte数组提高读写的效率:
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
提高每次读写的数据量减少实际读写的次数可以提高读写效率
块读写:一次读写一组字节
/
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 表达文件末尾 java.io.OutputStream超类上定义了块写操作
void write(byte[] data)
一次性将给定的字节数组中所有的字节写出 byte[] data:{10101010 01010101 11110000 00001111}
fos.write(data)
文件数据:
10101010 01010101 11110000 00001111 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();
}
}
返回当前时间:
package io;
public class CurrentTimeDemo {
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数组提高读写的效率、返回当前时间。的更多相关文章
- 用户态与内核态 & 文件流与文件描述符 简介【转】
转自:https://www.cnblogs.com/Jimmy1988/p/7479856.html 用户态和内核态 程序代码的依赖和调用关系如下图所示: Lib:标准ASCI C函数,几乎所有的平 ...
- 用户态与内核态 & 文件流与文件描述符 简介
用户态和内核态 程序代码的依赖和调用关系如下图所示: Lib:标准ASCI C函数,几乎所有的平台都支持该库函数,因此依赖该库的程序可移植性好: System Function:系统调用函数,与系统内 ...
- C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭
迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...
- [Java] 通过文件流拷贝文件
package test.stream; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
- c# 根据文件流查看文件真实格式
今天在做图片注册的功能的时候,测试提出一个问题:将随便一个非图片文件将后缀名改为jpg或其他,上传时应检验图片合法性.然后同事给提供了根据文件流前两个字节判断文件真实格式的思路,代码如下: publi ...
- C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)
文件流 FileStream 可读可写 大文件 释放 StreamReader 读取 释放 StreamWriter 写入 释放 using 中释放 File 可读可写 小文件 操作文 ...
- springboot 头像上传 文件流保存 文件流返回浏览器查看 区分操作系统 windows 7 or linux
//我的会员中心 头像上传接口 /*windows 调试*/ @Value("${appImg.location}") private String winPathPic; /*l ...
- C# 文件流FileStream 实现多媒体文件复制 StreamReader StreamWriter 读取写入文本
#region 实现多媒体文件的复制 string source = @"F:\123\source.avi";//源文件路径 string target = @"F:\ ...
- 解压上传的zip文件流和文件
/** * 解压上传的zip文件流 * @param stream * @param outputDirectory */ public static String unzip(InputStream ...
- Request中通过文件流获取文件
第一次写博客,希望能帮到以后接触到这里的同学,废话不多说,面对疾风吧. /** * 获取文件相信信息 * @param request HttpServletRequest实例 * @param im ...
随机推荐
- 记一个在线工具网站,程序员必备,json格式化、压缩、转义,加解密 编码解码
简用-在线工具箱-简单易用-工具大全 提供 json格式化,json代码压缩,json校验解析,json数组解析,json转xml,xml转json,json解析,json在线解析,json在线解析及 ...
- Warning: PHP Startup: Unable to load dynamic library 'php_pdo_oci.dll'处理
出现这样提示的原因可能有以下几种: (1)没有在php.ini中将extension=php_pdo_mysql.dll前面的分号去掉 在php.ini中分号表示注释,因为在配置时被注释掉了,所谓无法 ...
- Characterizing possible failure modes in physics-informed neural network
NeurIPS 2021 表征PINN中可能的失败模式.本文的思路也比较简单,通过对PINN的优化域进行观察,发现导致PINN训练的原因并不是因为神经网络的表达力不足,而是由于PINN中引入了基于PD ...
- Netty Reactor模型
1.netty抽象出两个线程池:BossGroup负责监听和建立连接 :WorkerGroup 负责网络IO的读写 2.BossGroup 和 WorkerGroup 类型都是NioEventLoop ...
- SPI接口(续二)
接下来看SPI接收器数据寄存器RXDAT,下表是它的全部位结构,其地址分别为0x40058014(SPI0).0x4005C014(SPI1). (1)第0到15位(RXDAT)为接收器数据,它包含接 ...
- Oracle11gR2安装
https://blog.csdn.net/newbie_907486852/article/details/80716275
- antd DatePicker限制日期的选择
import React from 'react'; import ReactDOM from 'react-dom'; import {Input,DatePicker,Form,Col,Butto ...
- Oracle 临时表空间暴满的原因与解决方法
Oracle临时表空间主要用来做查询和存放一些缓冲区数据.临时表空间消耗的主要原因是需要对查询的中间结果进行排序. 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,te ...
- 公共的common.scss (覆盖部分element组件主题色)
公共的 common.scss (包含主题色 覆盖部分element组件主题色) $theme: #D50000; $litterTheme: #ec6059; .text-theme { color ...
- 计算2-expr命令举例
一.expr命令 1.语法和功能 只能用于整数运算和字符串长度.匹配等运算处理 expr 2 + 2 expr 2 - 2 expr 2 \* 2 expr 2 / 2 i=5;i=`expr $1 ...