Java基础 FileReader-FileWriter / 缓冲字符输入输出流 / 缓冲字节输入输出流 三种方式 进行文本文件的复制
易错的地方:
/** 出错的地方:
* 1.缓冲流儿输出时,务必:flush();不然可能输出不尽!
* 2. bw缓冲字符输出流,记得这里! bw.write(b,0,len);
* 3.字符流不能复制除 纯文本文件 以外的其他文件,不然会损坏!!
* *1.对于非文本文件(视频/音频/图片)使用, 只能使用(字节)byte流! 也可以使用转换流提高速度233
* * 2.对于文本文件 ,大型文件的话,建议使用字符流(FileReaderWriter)!
*/
总的笔记:
/** 出错的地方:
* 1.缓冲流儿输出时,务必:flush();不然可能输出不尽!
* 2. bw缓冲字符输出流,记得这里! bw.write(b,0,len);
* 3.字符流不能复制除 纯文本文件 以外的其他文件,不然会损坏!!
* *1.对于非文本文件(视频/音频/图片)使用, 只能使用(字节)byte流! 也可以使用转换流提高速度233
* * 2.对于文本文件 ,大型文件的话,建议使用字符流(FileReaderWriter)!
*/ /**字符流处理步骤:
* ①声明②加载地址③read/write④close流)
*----------------------------------------------------------------------------
* 缓冲流(处理流的一种,相较于加速之前的操作)
* BufferedInputStream read()
* BufferedOutputStream write(),flush():刷新一次,确保输出完
* BufferedReader readLine(): 复制一行!
* BufferedWriter flush() //刷新一次,确保输出完
三种方式:
//实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文!
@Test //实验1: 同时使用FileReader / FileWriter 进行文本文件的复制,不支持中文!
public void testFileReaderWriter() throws IOException {
FileReader fr=null;
FileWriter fw=null;
File src=new File("D:\\SZS文件夹\\IO\\hello.txt");
File dest=new File("D:\\SZS文件夹\\IO\\复制的hello.txt");
try {
fr=new FileReader(src);
fw=new FileWriter(dest);
char[] ch= new char[10];
int len=0;
while((len=fr.read(ch))!=-1 ){
fw.write(ch);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
fr.close();
fw.close();
}
}
//实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制
@Test //实验2: 同时使用BufferInputStream和BufferOutputStream进行图片 的复制
public void testBufferStream() throws IOException{
//①声明②加载字节流,缓冲流③read/write④close缓冲流)
File src=new File("D:\\SZS文件夹\\IO\\TIM截图20181017161349.png");
File dest=new File("D:\\SZS文件夹\\IO\\复制的TIM截图.png");
FileInputStream fis= new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest); BufferedInputStream bis=new BufferedInputStream(fis);
BufferedOutputStream bos=new BufferedOutputStream(fos); byte[] b=new byte[1024];
int len;
while((len=bis.read(b))!=-1)
bos.write(b,0,len); bis.close();
bos.close();
}
//实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制
@Test //实验3: 同时使用BufferedReader 和 BufferedWriter 进行文本的复制
public void testBufferedReaderWriter() throws IOException{
File src=new File("D:\\SZS文件夹\\IO\\hello.txt");
File dest=new File("D:\\SZS文件夹\\IO\\BufferedReaderWriter复制的hello.txt");
//①声明②将地址加载进字符流,将字符流加载进缓冲流③read/write④close缓冲流)
FileReader fis= new FileReader(src);
FileWriter fos = new FileWriter(dest); BufferedReader bs=new BufferedReader(fis);
BufferedWriter bw=new BufferedWriter(fos); char[] b=new char[1024];
int len;
while((len=bs.read(b))!= -1) {
bw.write(b,0,len);
}
bw.flush();
bs.close();
bs.close();
}
学习视频地址:http://www.gulixueyuan.com/course/39/task/497/show
Java基础 FileReader-FileWriter / 缓冲字符输入输出流 / 缓冲字节输入输出流 三种方式 进行文本文件的复制的更多相关文章
- Java 7源码分析第13篇 - 字节输入输出流(1)
上一篇介绍了关于字节输入输出流的Java类框架,同时也简单介绍了一下各个类的作用,下面就来具体看一下这些类是怎么实现这些功能的. 1.InputStream和OutputStream InputStr ...
- Java基础知识强化之IO流笔记30:字节流4种方式复制mp4并测试效率
1. 需求:把e:\\哥有老婆.mp4 复制到当前项目目录下的copy.mp4中 字节流四种方式复制文件: • 基本字节流一次读写一个字节 • 基本字节流一次读写一个字节数组 • 高效字节流一次读写一 ...
- Java中从控制台输入的三种方式
我们最熟悉的从控制台读取一个字符或者一个字符串都知道用Scanner,那么除了Scanner还有没有其他的呢,答案是有的,我们来看看. System.in.read() System.in.read( ...
- django基础之day09,多对多创建数据表的三种方式
多对多三种创建方式 1.全自动(用在表关系不复杂的一般情况) class Book(models.Model): title=models.CharField(max_length=32) 多对多关系 ...
- Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)
Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...
- Java修炼——文件字节输入输出流复制和缓冲流复制
一:文件字节输入输出流复制 首先明确数据源和目的文件,然后就是"中转站",最后就是关闭 package com.bjsxt.ioproject; import java.io.Fi ...
- java学习笔记IO之字节输入输出流
IO字节输入输出流 OutputStream:字节输出流 该抽象类是所有字节输出流的超类: 定义了一些共性的成员方法: 1.写入一个字节 void write(int b);//b表示字节 2.写入字 ...
- Java基础知识强化之IO流笔记62:三种方式实现键盘录入
1. 三种方式实现键盘录入 System.in 标准输入流.是从键盘获取数据的 键盘录入数据三种方式: A:main方法的args接收参数. java HelloWorld hello w ...
- java: InputStreamReader将字节的输入流变成字符的输入流,OutputStreamWriter将字符的输出流变成字节的输出流
InputStreamReader:将字节的输入流变成字符的输入流, OutputStreamWriter:将字符的输出流变成字节的输出流 //将缓冲区的内容读取,可以一次读取 //可以接收键盘的输入 ...
随机推荐
- Springboot 参数中传List
使用REST API时,经常会有get/delete方法需要传一个list的情况,如果使用post难免有点破坏规则,实际上参数传list是可以做到的 方法一: 后端代码如下: @DeleteMappi ...
- 给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)
需求:给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换) 如: a 不替换 b 不替换 ab 不替换 ba 不替换 aba 不替换 aab 替换为 ...
- Haystack--基于Django的全文检索框架
好文章转载自:https://suguangti.cnblogs.com/p/11167097.html 阅读目录 1.什么是Haystack 2.安装 3.配置 4.处理数据 创建索引 5.设置视图 ...
- Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码
Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码 mysql默认密码为空 但是使用mysql -uroot -p 命令连接mysql时,报错ERROR 1045 (28 ...
- javascript高德地图放到网页中的方法
javascript高德地图放到网页中的方法 1 先获取到经纬度http://lbs.amap.com/console/show/picker 2 下面代码直接设置下中心点 和标记点就可以了 < ...
- MySql数据库 优化
MySQL数据库优化方案 Mysql的优化,大体可以分为三部分:索引的优化,sql慢查询的优化,表的优化. 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更 ...
- (五)CXF之添加拦截器
一.需求分析 webService中的拦截器类似于servlet的Filter过滤器.一般用于调用服务前后先调用拦截器的方法. 二.案例 本章案例是基于上一章节的基础上添加拦截器的 2.1 服务端添加 ...
- (三)Struts之Action类基础(一)
一.Action的类型 A.使用普通的类 必须有public的execute且返回值为String的方法. ActionType.java package com; public class Acti ...
- CCF 2017-09-2 公共钥匙盒
CCF 2017-09-2 公共钥匙盒 题目 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室 ...
- ORACLE:锁被未决分布式事务处理 18.27.160617 持有
1. 以管理员账号登陆 2. rollback force '18.27.160617 ';