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中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ...
随机推荐
- B. Clique Problem(贪心)
题目链接: B. Clique Problem time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- Angular提示文件不是一个有效的模块
ERROR in src/app/app.component.ts(2,23): error TS2306: File '/home/jerry/angular/todo/src/app/model. ...
- 人生苦短之我用Python篇(遍历、函数、类)
#遍历 info = {'key1':'value1','key2':'value2','key3':'value3'} #方式一 for i in info: print(i,info[i]) #方 ...
- PL/SQL Developer 建立远程连接数据库的配置 和安装包+汉化包+注册机
PL/SQL Developer ,主要是讲一下如何配置PL/SQL Developer ,连接Oracle数据库. [知识点] 1.PL/SQL Developer 是什么? PL/SQL Deve ...
- C# 报警 控制蜂鸣器发声
在C#中可以通过以下四种方式来实现蜂鸣或者报警,播放声音之类的功能.XP下对蜂鸣有用,win7下请接上扬声器. 1). Beep的报警实现 [c-sharp] view plaincopy / ...
- LeetCode Optimal Division
原题链接在这里:https://leetcode.com/problems/optimal-division/description/ 题目: Given a list of positive int ...
- 【LeetCode】汇总
此贴为汇总贴 673. Number of Longest Increasing Subsequence 075. Sort Colors 009. Palindrome Number 008. St ...
- jquery调用spring mvc接口返回字符串匹配
背景:有个增删改页面,用jquery祭出ajax异步调用接口,spring mvc响应对象是个json字符串,jquery根据响应结果判断,如果删除成功给出提示.那么问题来了,接口里响应的字符串怎么匹 ...
- layui与layer同时引入冲突的问题
之前在项目中只有用layer,但是后来有用到了layui,结果发现同时引入这两个东东 会出现冲突的问题 导致代码运行不正常 后来网上找到了解决办法: 学习源头:http://fly.layui.com ...
- 【转】使用JMeter进行负载测试——终极指南
使用JMeter进行负载测试——终极指南 这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 ...