笔记:

 **使用转换流进行文件的复制
  文本文件---字节流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. 图像Resize中0.5像素中心对齐的问题

    目录 0.5像素对齐的问题 0.5像素对齐的问题 1. 问题提出 在进行图像缩放时,偶尔会看到一些比较奇怪的代码,其中有一个就是0.5像素中心对齐的问题,例如在OpenCV线性插值的代码中有类似如下操 ...

  2. (CVE-2017-7494)Samba远程代码执行[Linux]

    简介 此漏洞是针对开启了共享的smb服务 漏洞利用 启动msfconsole search is_known_pipename   搜索此模块 use exploit/linux/samba/is_k ...

  3. 使用Homebrew来安装Node等工具

    原文转载自:https://www.cnblogs.com/richard-youth/p/9718349.html 使用 React Native,必须安装的依赖有:Node.Watchman 和 ...

  4. python 元组tuple - python基础入门(14)

    在上一篇文章中我们讲解了关于python列表List的相关内容,今天给大家解释一下列表List的兄弟 – 元组,俗称: tuple. 元组tuple和列表List类似,元组有如下特点: 1.由一个或者 ...

  5. Django与JS交互的示例代码-django js 获取 python 字典-Django 前后台的数据传递

    Django与JS交互的示例代码 Django 前后台的数据传递 https://www.cnblogs.com/xibuhaohao/p/10192052.html 应用一:有时候我们想把一个 li ...

  6. [转帖]8个优秀Docker容器监控工具,收藏了

    8个优秀Docker容器监控工具,收藏了 Docker是目前使用最广泛的容器之一,但它并不总是像物理硬件一样可见.而使用docker容器监控工具有助于消除这种透明度的缺失.以下介绍8种优秀Docker ...

  7. Oracle的varchar2如何比较大小

    首先要说的是Oracle中字符类型的比较都是基于ASCII码表来实现的,我就简单做个总结. Oracle中varchar2类型的字符串使用的是非填充空格的标准来进行比较的(表格中右边的那列,注意空格的 ...

  8. 解决maven项目无法读取src/main/java目录下面的配置文件问题

    我们在用Mybatis去操作底层数据库的时候,需要用到xml配置文件,一般我们是把配置文件和dao放置在同一层目录. 但是在用idea操作maven项目的时候,我们可能会遇到无法读取到dao对应的ma ...

  9. 图像人脸检测+人眼检测 (opencv + c++)

    摘要:实现图像中人脸检测,和人眼定位.输出检测标记图像和定位坐标. 工具:vs2015 opencv3  C++ 资源:haarcascade_frontalface_alt2.xml;haarcas ...

  10. 使用Struts2实现图片上传和拦截器

    今天来分享一个图片上传 现在很多小项目里面基本上都有要显示图片的功能,所以呢图片上传是基本要掌握的啦 一般的图片上传原理就是从本地选择一张图片然后通过io流发布到服务器上去 上传方案基本有三种: 1. ...