java常用字节流
常用的字节流有FileInputStream和FileOutputStream、BufferedInputStream和BufferedOutputStream、DataInputStream和DataOutputStream。
FileInputStream和FileOutputStream是基础的字节输入和输出流,通常在创建缓冲流时需要使用到,也可以用来做文件复制的功能。
* fileInputStream和fileOutputStream字节输入输出流实现文件的复制
*
* @author:tuzongxun
* @Title: fileInAndOuTest
* @param
* @return void
* @date Jul 20, 2016 10:21:41 AM
* @throws FileNotFoundException
*/
public static void fileInAndOuTest() throws IOException {
File file = new File("C:\\Users\\tuzongxun123\\Desktop\\ioTest1.txt");
// 创建一个fileInputStream对象
FileInputStream fileInputStream = new FileInputStream(file);
FileOutputStream fileOutputStream = new FileOutputStream(new File("C:\\Users\\tuzongxun123\\Desktop\\ioTest.txt"));
// 获取文件中字符的长度
int leng = fileInputStream.available();
System.out.println(leng);
for (int i = 0; i < leng; i++) {
// 读取每个字节
int in = fileInputStream.read();
System.out.print(in);
// 把读取的字节写入到另一个文件
fileOutputStream.write(in);
}
fileInputStream.close();
// 使文件立即写入到磁盘
fileOutputStream.flush();
fileOutputStream.close();
}
BufferedInputStream和BufferedOutputStream是缓冲字节输入输出流,相对于基础的字节流有更高的效率,而效率更高的原理在于用空间换取时间。
也就是说使用缓冲流的时候,会先把一定的数据放到缓冲区,也就是内存中,然后read的时候直接从缓冲区读取,这样就减少了读写磁盘文件的次数,从而减少读写时间。
/**
* BufferedInputStream和BufferedOutputStream缓冲流复制文件
*
* @author:tuzongxun
* @Title: bufferedTest
* @param @throws IOException
* @return void
* @date Jul 21, 2016 9:05:57 AM
* @throws
*/
public static void bufferedTest() throws IOException {
File file = new File("C:\\Users\\tuzongxun123\\Desktop\\ioTest1.txt");
File file1 = new File("C:\\Users\\tuzongxun123\\Desktop\\ioTest2.txt");
// 缓冲输入流对象,bis和bos作为缓冲区,
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
// 缓冲输出流对象
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file1));
//声明缓冲区大小
byte[] byte1 = new byte[1024];
while (bis.read(byte1) != -1) {
bos.write(byte1);
} ;
// 将缓冲区中的数据全部写出
bos.flush();
bis.close();
bos.close();
}
DataInputStream和DataOutputStream被称为数据输入输出流,他们因为自己的特性而常被用于网络传输,它可以保证“无论数据来自何种机器,只要使用一个DataInputStream收取这些数据,就可用本机正确的格式保存它们.“
不过现在使用spring做文件上传和下载时我自己使用的是MultipartFile,所以也就没有做DataInputStream和DataOutputStream的例子。
MultipartFile上传文件的例子可以参考:
使用springMVC实现文件上传和下载之环境配置与上传
java常用字节流的更多相关文章
- 字节流与字符流的区别&&用字节流好还是用字符流好?
字节流: (A)FileOutputStream(File name) 创建一个文件输出流,向指定的 File 对象输出数据. (B)FileOutputStream(FileDescriptor) ...
- java常见面试题及答案 1-10(基础篇)
java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...
- java常见报错及解决
Java常见报错信息: Java 常见异常种类 Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定 ...
- java常见面试题及答案
java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...
- Java 常见面试题(一)
1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...
- 【转载】JAVA常见面试题及解答(精华)
JAVA常见面试题及解答(精华) 1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...
- Java常考面试题
Java常考面试题 1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 答:Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行 ...
- JAVA常见面试题问题简述(持续更新中)
JAVA常见面试题问题简述 1. springcloud和dubbo的区别 ①相比之下springcloud 的社区会更加活跃,解决问题的速度也会越来越快,dubbo相对来说如果碰到没有解决的问题,就 ...
- Java 常量值的数据类型
Java 常量值(也叫字面量)和变量一样,也是有数据类型的. 经常有面试题考察你对 Java 常量值数据类型的理解,如下: float a = 3.3; 问你这一行代码是否正确?答案肯定是不正确.为什 ...
随机推荐
- Prime - 程序员的修养
求质数算法的N种境界 求质数算法的N种境界[1] - 试除法和初级筛法 过程 尽管题目并没有要我们写一个最优的算法,但是身为一个程序员,优化应该是一种习惯,在编程的过程中,随着思考进行优化. 如果你只 ...
- PHP定义字符串的四种方式
1.简介 在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用. 我们在使用php进行开发的时候,大多数使用双引号.单引号进行定义字符串.既然有这两种方式,那么他们之间肯定是有区 ...
- PYTHON3 中的虚假四舍五入:round()
PYTHON3 中的虚假四舍五入:round() 创建时间: 2017/12/5 17:08 作者: CN_Simo 标签: python基础, round, 四舍五入 一.这不是一个BUG! 在使用 ...
- python布尔类型
布尔类型 python当中下面的值在作为布尔表达式时,会被解释器看作False: 1.None: 2.False: 3.任何为0的数字类型,如:0,0.0,0j: 4.任何空序列,如:'',(),[] ...
- jQuery源码逐行分析学习01(jQuery的框架结构简化)
最近在学习jQuery源码,在此,特别做一个分享,把所涉及的内容都记录下来,其中有不妥之处还望大家指出,我会及时改正.望各位大神不吝赐教!同时,这也是我的第一篇前端技术博客,对博客编写还不是很熟悉,美 ...
- selenium打开chrome浏览器代码
import os from selenium import webdriver chromedriver = "C:\Program Files (x86)\Google\Chrome\A ...
- SDN第二次上机作业
作业链接 安装floodlight 生成拓扑并连接控制器floodlight,利用控制器floodlight查看图形拓扑 from mininet.topo import Topo class MyT ...
- php与web页面交互
一.web表单 web表单的功能是让浏览者和网站有一个互动的平台.web表单主要用来在网页中发送数据到服务器. 1.1 表单的创建 使用form标记,并在其中插入相关的表单元素,即可创建一个表单. & ...
- JSP基础点滴
注释:<%-- 注释 --%> JSP中一共有3种Scriptlet代码.支持与HTML的代码混编. 第一种:<%%> 定义局部变量,编写语句. 第二种:<%!%> ...
- Chrome Stylist 插件 (CSS备份)
Stylist 插件还是很好用的,可以给网站自定义CSS样式,(还有个插件叫"油猴子",可以给网页加载自定义JS): 不过麻烦的是,现在的最新版360浏览器不能显示这个插件(这个浏 ...