Java基础 使用转换流进行文件的复制 / RandomAccessFile 类进行文件的复制
笔记:
**使用转换流进行文件的复制
文本文件---字节流FileInputStream--> [InputStreamReader] -----字符流BufferedReader------>程序
* ------字符流BufferedWriter----->[OutputStreamWriter]-----字节流-FileOutputStream--->[ 输出目的/ 文件]
* 编码: 字符串-->字节数组
* 解码: 字节数组-->字符串
/** RandomAccessFile :支持随机访问
* 1.既可以充当一个输入流,也可以充当一个输出流 ; read(byte b[])/write()
* 2.支持从文件的任意位置的开头进行读取和写入 ;
* raf.seek(long pos) //设置读指针的地址;
* raf.writeBytes(String s);//将一个字符串 写入文件,
* writeInt(int v);//写入一个int数据
* 3.支持从任意位置的读取和写入(插入);
*/
代码:
实验4: 使用转换流 进行文件的复制
@Test //实验4: 使用转换流 进行文件的复制
public void testTrans() throws IOException { //①声明②将地址加载进字符流,将字符流加载进缓冲流③read/write④close缓冲流)
// 解码
File src=new File("D:\\SZS文件夹\\IO\\hello.txt");
FileInputStream fis= new FileInputStream(src);
InputStreamReader isr=new InputStreamReader(fis,"GBK");
BufferedReader br=new BufferedReader(isr);
//编码
File dest=new File("D:\\SZS文件夹\\IO\\转换流复制的hello.txt");
FileOutputStream fos = new FileOutputStream(dest);
OutputStreamWriter osw=new OutputStreamWriter(fos,"GBK");
BufferedWriter bw=new BufferedWriter(osw); char[] b=new char[1024];
int len;
while((len=br.read(b))!= -1) {
bw.write(b,0,len);
}
bw.flush();
br.close();
bw.close();
}
}
使用 RandomAccessFile 类 进行进行文件的复制测试的代码:
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class TestRandomAccessFile {
//进行文件的读/写
@Test //使用RandomAccessFile 进行文件的复制
public void test1() throws IOException {
File src= new File("D:\\SZS文件夹\\IO\\hello.txt");
File dest= new File("D:\\SZS文件夹\\IO\\RandomAccessFile_hello.txt");
RandomAccessFile raf1=new RandomAccessFile(src,"r");
RandomAccessFile raf2=new RandomAccessFile(dest,"rw");
byte[] b = new byte[20];
int len=0;
while((len=raf1.read(b)) !=-1){
raf2.write(b,0,len);
}
raf1.close();
raf2.close();
}
@Test //使用RandomAccessFile 的seek() 设置读指针的位置 ,下面的栗子相当于忽略了前10个字符
public void test2() throws IOException{
File src= new File("D:\\SZS文件夹\\IO\\hello.txt");
File dest= new File("D:\\SZS文件夹\\IO\\RandomAccessFile2_hello.txt");
RandomAccessFile raf1=new RandomAccessFile(src,"r");
RandomAccessFile raf2=new RandomAccessFile(dest,"rw");
raf1.seek(10); //设置读指针的位置
byte[] b = new byte[20];
int len=0;
while((len=raf1.read(b)) !=-1){
raf2.write(b,0,len);
}
raf1.close();
raf2.close();
}
}
Java基础 使用转换流进行文件的复制 / RandomAccessFile 类进行文件的复制的更多相关文章
- java基础(24):转换流、缓冲流
1. 转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputS ...
- Java基础教程——转换流
转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF-8编码.这时候读取文件可能出现乱码.事实上实际应用中编码格式不匹配的场景非常多. 转换流可以指定编码方式,用于解决乱码 ...
- java基础 关于转换流
转换流有两种:InputStreamReader:将字节流转换为字符流 OutputStreamWriter:将字符流转换为字节流 什么时候使用转换流?由以下分析: 流对象很多,首先要明确那个流对象. ...
- JAVA基础之转换流和缓冲流
个人理解: 在理解的字符流和字节流的区别后.要是想读取指定的编码格式的文件时,特别是不是默认的格式时,就需要转换流了,需要注意的是字符流是需要清除缓冲区的:当需要快速的进行读取时,则需要缓冲流.存在即 ...
- java中的io流总结(二)——RandomAccessFile类
知识点:RandomAccessFile (随机访问文件)类 (一)描述 前一篇博客中https://www.cnblogs.com/shuaifing/p/11490160.html,主要描述Fil ...
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
- Java基础之IO流整理
Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...
- Java基础之IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- java基础之IO流(一)字节流
java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...
随机推荐
- Andrew Ng机器学习课程14
Andrew Ng机器学习课程14 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言:主要介绍了当数据量不足,利用EM算法对混合高斯模型进行建模时数据量比 ...
- csu 1958: 数字游戏
1958: 数字游戏 Submit Page Summary Time Limit: 2 Sec Memory Limit: 128 Mb Submitted: 134 ...
- python线程定时器Timer(32)
相对前面几篇python线程内容而言,本片内容相对比较简单,定时器 – 顾名思义,必然用于定时任务. 一.线程定时器Timer原理 原理比较简单,指定时间间隔后启动线程!适用场景:完成定时任务,例如: ...
- windows下 安装gitlab及其相关图形管理工具
windows下 安装gitlab及其相关图形管理工具 在windows下安装git中文版客户端并连接gitlab 下载git Windows客户端 git客户端下载地址:https://gi ...
- 《Mysql - SQL优化》
一:在查询语句时,应该注意的优化问题 - SELECT语句务必指明字段名称 - SELECT * 会增加很多不必要的消耗(CPU.IO.内存.网络带宽) - 同时会让 Mysql 优化器无法优化 - ...
- Python豆瓣源镜像
pip install pymysql -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
- 开源定时任务框架Quartz(一)
简介 Quartz是OpenSymphony开源组织的一个开源项目,定时任务框架,纯Java语言实现,最新版本为2.3.0. 设计模式 Quartz中使用的设计模式如下: 1.Builder模式 2. ...
- POSIX异步I/O接口使用
POSIX1003.1b 实时扩展协议规定的标准异步 I/O 接口,即 aio_read 函数. aio_write 函数.aio_fsync 函数.aio_cancel 函数.aio_error 函 ...
- Abandoning Roads CodeForces - 1149D (最小生成树)
大意: 给定无向图, 边权只有两种, 对于每个点$x$, 输出所有最小生成树中, 点$1$到$x$的最短距离. 先将边权为$a$的边合并, 考虑添加边权为$b$的边. 每条路径只能经过每个连通块一次, ...
- 红帽linux系统开机自启动脚本。
其实很多东西在最后完成以后会觉得也就那样,有意思的是探究的过程. 前段时间老板要求把一个程序做成linux系统开机自启动脚本的模式. 首先你需要写一个脚本. 我这边建立了一个.sh的脚本,就是用脚本启 ...