用字符流完成文档的复制:

测试文档:

代码1:

 package InputOutput;

 import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class CopyFileDemo1 {
public static void main(String[] args) throws IOException {
// 指定读取的文件位置
String path1 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\CopyReader.txt";
// 指定写入的文件位置
String path2 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\CopyWriter.txt";
// 创建输入流对象关联数据源文件
FileReader reader = new FileReader(path1);
// 创建输出流对象关联目的地文件
FileWriter writer = new FileWriter(path2);
// 读取文件
int flag = 0;
// 获取复制前时间
long time1 = System.currentTimeMillis();
while ((flag = reader.read()) != -1) {
writer.write(flag);
}
// 获取复制后时间
long time2 = System.currentTimeMillis();
// 释放资源
writer.close();
reader.close();
// 输出时间差
System.out.println("时间 : " + (time2 - time1));
}
}

结果:

上面代码使用字符流一个字符一个字符的读取,写入,下面尝试用字符数组进行复制文档,数据少时没有什么区别,但数据多了可以提高很多效率!

代码:

 package InputOutput;

 import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class CopyFileDemo2 {
public static void main(String[] args) throws IOException {
// 指定读取的文件位置
String path1 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\CopyReader.txt";
// 指定写入的文件位置
String path2 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\CopyWriter.txt";
// 创建输入流对象关联数据源文件
FileReader reader = new FileReader(path1);
// 创建输出流对象关联目的地文件
FileWriter writer = new FileWriter(path2);
// 读取文件
int flag = 0;
// 用字符组读取数据
char[] demo = new char[1024];
// 获取复制前时间
long time1 = System.currentTimeMillis();
while ((flag = reader.read(demo)) != -1) {
writer.write(demo, 0, flag);
}
// 获取复制后时间
long time2 = System.currentTimeMillis();
// 释放资源
writer.close();
reader.close();
// 输出时间差
System.out.println("时间 : " + (time2 - time1)); }
}

结果:

IO流学习之字符流(二)的更多相关文章

  1. IO流学习之字符流(三)

    IO流之字符流缓冲区: 概念: 流中的缓冲区:是先把程序需要操作的数据保存在内存中,然后我们的程序读写数据的时候,不直接和持久设备之间交互,而改成和内存中的数据进行交互. 缓冲区:它就是临时存储数据, ...

  2. IO流学习之字符流(一)

    IO流(Input/Output) 简介: 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数 ...

  3. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  4. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  5. java基础46 IO流技术(输出字符流/缓冲输出字符流)

    一.输出字符流 1.1.输出字符流体系 --------| Writer:输出字符流的基类(抽象类)  ----------| FileWriter:向文件输出数据输出字符流(把程序中的数据写到硬盘中 ...

  6. java IO的字节流和字符流及其区别

    1. 字节流和字符流的概念    1.1 字节流继承于InputStream    OutputStream,    1.2 字符流继承于InputStreamReader    OutputStre ...

  7. javaio学习笔记-字符流类(1)

    1.java.io包中的字符流类-BufferedReader和BufferedWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; In ...

  8. javaio学习笔记-字符流类(2)

    1.java.io包中的字符流类-FileReader和FileWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; FileReader ...

  9. java学习之字符流与字节流的转换

    package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...

随机推荐

  1. Go语言实现:【剑指offer】用两个栈实现队列

    该题目来源于牛客网<剑指offer>专题. 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. Go语言实现: var list1 = list.New( ...

  2. JDBC访问数据库的具体步骤(MySql + Oracle + SQLServer)

    * 感谢DT课堂颜群老师的视频讲解(讲的十分仔细,文末有视频链接) import java.sql.Connection; import java.sql.DriverManager; import ...

  3. 手写Tomcat

    学习JavaWeb之后,只知道如何部署项目到Tomcat中,而并不了解其内部如何运行,底层原理为何,因此写下此篇博客初步探究一下.学习之前需要知识铺垫已列出:Tomcat目录结构.HTTP协议.IO. ...

  4. golang的timer一些坑

    本文代码部分基于dive-to-gosync-workshop的代码 Golang 的NewTimer方法调用后,生成的timer会放入最小堆,一个后台goroutine会扫描这个堆,将到时的time ...

  5. javascript get set读取器

    class Person{ constructor(name, id){ let _name = name, _id = id; Object.defineProperties(this, { nam ...

  6. 使用docker搭建FastDFS

    拉取镜像(使用docker-componse可以忽略) [root@localhost ~]# docker pull phinexdaz/fdfs_tracker [root@localhost ~ ...

  7. Properties(hashtable的子类)

    Properties: Properties是hashtable的子类(在java.util包中).该集合的特点:可以用于键值对形式的配置文件,且不允许Key重复,若有重复的,后者会覆盖前者. 也就是 ...

  8. Zookeeper分布式系统协同器概念快速学习

    原文格式可以访问:https://www.rockysky.tech 分布式系统的基本操作 主节点选举:在绝大多数分布式系统中,都需要进行主节点选举.主节点负责管理协调其它节点或者同步集群中其它节点的 ...

  9. 刷题85. Maximal Rectangle

    一.题目说明 题目,85. Maximal Rectangle,计算只包含1的最大矩阵的面积.难度是Hard! 二.我的解答 看到这个题目,我首先想到的是dp,用dp[i][j]表示第i行第j列元素向 ...

  10. MySQL保存微信昵称中的特殊符号造成:(Incorrect string value: "xxxx'for column ‘name’ at row 1)异常

    今天有业务员反应,编辑某个用户的信息的时候出现了异常,异常信息如下: Incorrect string value: "xFOx9Fx92x9D vxE6..'f or column 'na ...