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

测试文档:

代码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. docker集合

    docker集合 docker(1):容器技术简介 docker(2):docker的“前身”—lxc docker(3):docker简介 docker(4):docker的安装(centos7)和 ...

  2. 珠峰-vue

  3. shell脚本自动备份MySQL数据库

    脚本如下: #!/bin/bash #数据库IP dbserver='127.0.0.1' #数据库用户名 dbuser='root' #数据密码 dbpasswd=' #数据库,如有多个库用空格分开 ...

  4. webpack构建vue单文件组件

    1.安装vue-loader和vue-template-compiler npm i vue-loader vue-template-compiler --save-dev 2.配置webpack.c ...

  5. Java synchronized 关键字详解

    Java synchronized 关键字详解 前置技能点 进程和线程的概念 线程创建方式 线程的状态状态转换 线程安全的概念 synchronized 关键字的几种用法 修饰非静态成员方法 sync ...

  6. F12后面的世界(Elements篇)——重识html

    从 淘宝网, 检查元素开始探索之旅. html是什么? hyper text markup language 超文本标记语言,使用标签来描述网页 标签 语义化标签 html5新增标签 什么是超文本? ...

  7. C#设计模式学习笔记:(20)职责链模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8109100.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第八个模式--职 ...

  8. 在centos7.x环境中SQL Server附加数据库

    第一步,准备好windows与Linux之间文件传递的工具,下载并安装 https://winscp.net/eng/download.php 第二步,把本地的数据库文件拷贝一份,放到别的文件夹中,因 ...

  9. CMD命令下图片合成一句话木马命令

    非常简单,我们只需要一张图片1.jpg一句话木马写好的php文件 1.php之后我们进入到命令行.注意:将php文件和图片文件放到同一目录下,cmd也要跳转到放文件的目录下之后执行命令 copy .j ...

  10. VLAN和子网之间的区别与联系

    通常来说,子网和VLAN的相似之处在于它们都处理网络的一部分的分段或分区.但是,VLAN是数据链路层(OSI L2)的构造,而子网是网络层(OSI L3)的IP构造,它们解决网络上的不同问题.尽管在V ...