笔记:

 **使用转换流进行文件的复制
  文本文件---字节流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 类进行文件的复制的更多相关文章

  1. java基础(24):转换流、缓冲流

    1. 转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputS ...

  2. Java基础教程——转换流

    转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF-8编码.这时候读取文件可能出现乱码.事实上实际应用中编码格式不匹配的场景非常多. 转换流可以指定编码方式,用于解决乱码 ...

  3. java基础 关于转换流

    转换流有两种:InputStreamReader:将字节流转换为字符流 OutputStreamWriter:将字符流转换为字节流 什么时候使用转换流?由以下分析: 流对象很多,首先要明确那个流对象. ...

  4. JAVA基础之转换流和缓冲流

    个人理解: 在理解的字符流和字节流的区别后.要是想读取指定的编码格式的文件时,特别是不是默认的格式时,就需要转换流了,需要注意的是字符流是需要清除缓冲区的:当需要快速的进行读取时,则需要缓冲流.存在即 ...

  5. java中的io流总结(二)——RandomAccessFile类

    知识点:RandomAccessFile (随机访问文件)类 (一)描述 前一篇博客中https://www.cnblogs.com/shuaifing/p/11490160.html,主要描述Fil ...

  6. java基础之IO流(二)之字符流

    java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...

  7. Java基础之IO流整理

    Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...

  8. Java基础之IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  9. java基础之IO流(一)字节流

    java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...

随机推荐

  1. MAC OS brew的使用

    brew 是 Mac 下的一个包管理工具,类似于 centos 下的 yum,可以很方便地进行安装/卸载/更新各种软件包,例如:nodejs, elasticsearch, kibana, mysql ...

  2. 安卓AES加密

    一:什么是AES加密 AES高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准. ...

  3. PHP解析xml的方法

    PHP解析xml的方法<pre><?php /** XML 文件分析类 * Date: 2013-02-01 * Author: fdipzone * Ver: 1.0 * * fu ...

  4. Selenium绕过登录的实现

    1.使用命令行启动Chrome:Mac:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome -remote-debugging ...

  5. Linux精简版系统安装网络配置问题解决

    参考文档:https://www.jianshu.com/p/7579a2ad1c92 通过链接中的文档配置linux系统的时候,在执行命令yum install net-tools的这里提示错误,是 ...

  6. WUTOJ 1284: Gold Medal(Java)

    1284: Gold Medal 题目   有N个砝码,重量为:3i-1(1<=i<=N),有一块重量为 W 的金牌.现在将金牌放在天平的左边.你需要将砝码放在左边或右边使得天平平衡,如果 ...

  7. 使用Duilib开发Windows软件(4)——消息传递

    云信Duilib中没有窗体类的函数可以用来直接收取到所有控件的事件,每个控件都可以单独设置自己的事件处理函数,一般在InitWindow方法中初始化各个控件的事件处理函数. 每个控件都有许多形如Att ...

  8. WINDOWS记事本的换行\r\n

    今天发现,\r\n才能换行,好像记事本不能改.

  9. linux-删除一个目录下的所有文件,但保留某个或者多个指定文件

    Linux:删除一个目录下的所有文件,但保留一个指定文件 面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 ...

  10. Unity UGUI动态生成控件

    一. 首先你得先清楚RectTransform组件的一些程序控制 1. 先得到UGUI控件上面的RectTransform组件 RectTransform rtr = gameObject.GetCo ...