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,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...
随机推荐
- 使用expect实现自动交互,shell命令行自动输入,脚本自动化,变量引用,expect spawn执行带引号命令,expect 变量为空,不生效,不能匹配通配符*,函数,数组
背景 有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互. expect是一个自动交互功能的工具,可以满足代替我们实际工作 ...
- 三节课MINI计划第三周
第一部分 微信读书的产品分析 一.任务背景 二.做什么 三.TASK8 业务流程图 四.TASK9 五.周会 六.周报
- nvm 相关命令
nvm install 安装指定版本,可模糊安装,如:安装v10.4.0,既可nvm install v10.4.0,又可nvm install 4.4 nvm uninstall 删除已安装的指定版 ...
- Shuffle 机制
1. 概述 Map 方法之后,Reduce 方法之前的数据处理过程称之为 Shuffle. 2. Partition 分区 需求:要求将统计结果按照条件输出到不同文件中(分区).比如:将统计结果按照手 ...
- react生成二维码
图片实例: 简介: QRCode.js 是一个生成二维码的JS库.主要是通过获取 DOM 的节点,再通过 HTML5 Canvas 绘制而成,不依赖任何库. 用法: 1. 在项目中引入qrcode.m ...
- [转帖]Pivotal Greenplum 6.0 新特性介绍
Pivotal Greenplum 6.0 新特性介绍 https://cloud.tencent.com/developer/news/391063 原来 greenplum 也是基于pg研发的. ...
- Centos7.3安装sftp服务和ssh
Centos安装SFTP 安装SFTP服务 1. 查看openssh版本 ssh -V openssh版本必须大于4.8p1 ...
- 写CSDN博客
文章目录 前言 写博客的规范 写博客的小技巧 版权声明模板 博客表格模板 更改博客字体和颜色 LaTeX 数学公式 前言 这是一篇关于写CSDN博客的文章.记录我的博客规范,技巧,模板,心得. 写博客 ...
- 通过getAdaptiveExtension生成的动态类
通过getAdaptiveExtension生成的动态类 方便调式使用 请放在根目录下
- archive_lag_target参数
需求,由于一套生产环境归档日志切换频率过低,建议修改参数,使其间隔一定时间周期自动切换生成归档日志; SQL>; THREAD# SEQUENCE# TO_CHAR(COMPLETION_TIM ...