java基础之io流总结三:字节流读写
字节流读写适用于任何文件,包括图片,视频等。
基本字节流
一次读一个字节和一次读一个字节数组
FileInputStream fis = new FileInputStream(path);
//一次读一个字节
int by;
//read()==-1则代表文件读到了末尾
while ((by = fis.read()) != -1) {
System.out.print((char) by);
} //一次读一个字节数组 并转换成字符串
byte[] bytes = new byte[1024];
int len;
//read()==-1则代表文件读到了末尾
while ((len = fis.read(bytes)) != -1) {
System.out.println(new String(bytes, 0, len));
len = fis.read(bytes);
}
//close
fis.close();
一次写一个字节和一次写一个字节数组
FileOutputStream fos = new FileOutputStream(path);
// 写入方法
fos.write(65);
byte[] bytes = { 1, 2, 3, 4, 5 };
fos.write(bytes);
// 写入字符串
byte[] bys = "字节流输出写入文件2".getBytes();
fos.write(bys);
// 写字符串一部分
fos.write(bys, 0, 4); // 换行写入
for (int i = 0; i < 10; i++) {
fos.write("张学友".getBytes());
fos.write("\r\n".getBytes());
}
// 追加写入 实例化FileOutputStream的时候 构造方法 选择下面这个带true的
fos = new FileOutputStream("a.txt", true);
//
// 换行写入
for (int i = 0; i < 10; i++) {
fos.write("刘德华".getBytes());
fos.write("\r\n".getBytes());
} // close
fos.close();
复制文件:也就是读出来直接写入到新文件中
// 首先读
FileInputStream fis = new FileInputStream(inputPath);
// 然后写
FileOutputStream fos = new FileOutputStream(outPutPath);
int by;//一次读写一个字节
while ((by = fis.read()) != -1) {
fos.write(by);
} // 一次读写一个字节数组
byte[] bys = new byte[1024];
int len;
while ((len = fis.read(bys)) != -1) {
fos.write(bys, 0, len);
}
fis.close();
fos.close();
缓冲区字节流
一次读一个字节和一次读一个字节数组
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
// 单字节
int by;
while ((by = bis.read()) != -1) {
System.out.print((char)by);
}
// 字节数组
byte[] bys = new byte[1024];
int len;
while ((len = bis.read(bys)) != -1) {
System.out.println(new String(bys, 0, len));
}
bis.close();
一次写一个字节和一次写一个字节数组
// 写入 new FileOutputStream(path, true) 第二个参数设置为true代表是在文件中追加写入
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path, true));
bos.write(64);
bos.write("银鞍照白马\r\n".getBytes());
bos.write("飒沓如流星\r\n".getBytes());
bos.close();
复制文件:也就是读出来直接写入到新文件中
// 缓冲区字节流一次读写一个字节
BufferedOutputStream bos1 = new BufferedOutputStream(new FileOutputStream(outPutPath));
BufferedInputStream bis1 = new BufferedInputStream(new FileInputStream(inputPath));
int by2;
while ((by2 = bis1.read()) != -1) {
bos1.write(by2);
}
bos1.close();
bis1.close();// 缓冲区字节流一次读写一个字节数组
BufferedInputStream bis2 = new BufferedInputStream(new FileInputStream(inputPath));
BufferedOutputStream bos2 = new BufferedOutputStream(new FileOutputStream(outPutPath));
byte[] bys4 = new byte[1024];
int len4;
while ((len4 = bis2.read(bys4)) != -1) {
bos2.write(bys4, 0, len4);
}
bos2.close();
bis2.close();
一次读写一个字节数组要比一次读写一个字节的速度快
缓冲区字节流一次读写一个字节数组比基本字节流一次读写一个字节数组速度快
java基础之io流总结三:字节流读写的更多相关文章
- java基础之IO流(一)字节流
		
java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...
 - java基础之IO流(二)之字符流
		
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
 - Java基础之IO流整理
		
Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...
 - Java中的IO流(三)
		
上一篇<Java中的IO流(二)>把学习Java的字符流以及转换流作了一下记录,从本篇开始将把IO流中对文件或文件夹操作的对象File类的学习进行一下记录. 一,File类的构造函数及字段 ...
 - java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理
		
一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...
 - Java基础:IO流之字节流和字符流
		
1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...
 - java基础43 IO流技术(输入字节流/缓冲输入字节流)
		
通过File对象可以读取文件或者文件夹的属性数据,如果要读取文件的内容数据,那么我们就要使用IO技术. 一.输入字节流 输入字节流的体系: -------| InputStream:所有输入字节流的 ...
 - java基础之 IO流
		
javaIO流 IO流 : (input output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方. IO技术的作用:主要就是解决设备和设备之间的数据传输问题 ...
 - 【java基础】]IO流
		
IO流 概念: 流的概念源于unix中管道(pipe)的概念,在unix中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ...
 
随机推荐
- 正则化项L1和L2的区别
			
https://blog.csdn.net/jinping_shi/article/details/52433975 https://blog.csdn.net/zouxy09/article/det ...
 - Android sharedUserId 使用
			
在Android 系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,.这个数字证书并不需要权威的数字证书签名机构认证,它只是用来让应用程 ...
 - 安卓开发第一记 android stdio 安装后 新建测试项目报错
			
Failed to resolve:com.android.support:appcompat-v7:报错处理 你在使用android studio时是否也出现过上图的报错,你还在为它的出现烦恼? ...
 - Android用Gson解析JSON字符串
			
在volley框架中有一个 protected Response<Result<T>> parseNetworkResponse(NetworkResponse respons ...
 - 【HTML5】Canvas绘图详解-1
			
----->Canvas绘制基础 1,线条绘制 1-1,线条组成的图形和beginPath 案例:绘制由不同颜色的线条组成的图案 1-2,多边形的填充和closePath 案例:绘制封闭具有填充 ...
 - Browserify使用指南(转)
			
让浏览器加载Nodejs模块 目前NPM上有二十多万个NodeJS模块,它们都是通过CMD的方式打包的,除了特定的可以使用CMD模块加载器加载的模块,大部分nodejs模块无法直接使用到浏览器环境中. ...
 - 【转】Pro Android学习笔记(九八):BroadcastReceiver(2):接收器触发通知
			
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.sina.com.cn/flowingflying或作者@恺风Wei-傻瓜与非傻瓜 广播接 ...
 - 【转】JMeter远程测试
			
详解JMeter远程测试(1) 如果运行JMeter客户端的机器性能不能满足测试需要,那么测试人员可以通过单个JMeter GUI客户端来控制多个远程JMeter服务器,以便对服务器进行压力测试,模拟 ...
 - java代码逆序输出数字
			
总结:请告诉我更好的方法~~~总觉得不好. package com.badu; import java.util.Scanner; //逆序输出数字: // class fa { public sta ...
 - Java-Runoob:Java 循环结构
			
ylbtech-Java-Runoob:Java 循环结构 - for, while 及 do...while 1.返回顶部 1. Java 循环结构 - for, while 及 do...whil ...