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,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...
随机推荐
- linux SSH 登录
1: 远程连接linux server: ssh -p22 root@192.168.XXX.XXX 然后输入密码. 2: 免密码的方式: A: sudo -i B: ssh-keyge ...
- 排序算法三:Shell插入排序
排序算法三:Shell插入排序 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言 在我的博文<"主宰世界"的10种算法短评> ...
- storm是如何保证at least once语义的?
storm中的一些原语: 要说明上面的问题,得先了解storm中的一些原语,比如: tuple和messagetuple:在storm中,消息是通过tuple来抽象表示的,每个tuple知道它从哪里来 ...
- OS计算题练习
一.进程同步 1.设有两个进程P.Q,P的优先级高于Q,同时进入就绪队列.各自运行的程序段如下所示: 进程P 进程Q P1 Y=12 Q1 X=18 P2 Y=A+Y Q2 A=X+A P3 ...
- SpringBoot使用thymeleaf的方式引用static中的静态资源
当我们在开发网站时为了快速完成,避免不了使用第三方的框架文件.这样我们就得引用框架中的各种资源文件.那么,在springboot中通过 thymeleaf如何在html中使用static文件夹下的静态 ...
- 只学python行吗
常言道:"流水的语言,铁打的Python",目前它可以说是已经"睥睨天下,傲视群雄"了.它天生丽质,易于读写,非常实用,从而赢得了 广泛的群众基础,被誉为&qu ...
- 20191011-构建我们公司自己的自动化接口测试框架-Util的TestDataHandler模块
TestDataHandler模块主要是做测试数据的处理,包括转换数据格式和变量参数处理转换数据格式函数: data是数据,data以$()的方式识别变量,如果请求的数据有变量,则将变量用global ...
- 【转载】【最短路Floyd+KM 最佳匹配】hdu 2448 Mining Station on the Sea
Mining Station on the Sea Problem Description The ocean is a treasure house of resources and the dev ...
- s5p6818 Overview
S5P6818: 64bit Octa-Core, High Performance, Advanced 3D Graphics, Full-HD Multimedia Video, A53 Core ...
- java运算符那些事
&& 逻辑与 &&先运算&&左边的算式,如果为假,则直接停止,后面不管有多少运算式都不再运算,如果为真则继续判断后面的式子,只有所有的条件全部成立,才会 ...