IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java的IO---文件的字节、字符、缓冲器的复制 -> 正文阅读

[Java知识库]java的IO---文件的字节、字符、缓冲器的复制

目录

IO流

文件复制

一 一次读一个字节

二? 一次读一个字节

三 一次读一个字符数组

字符转换流的简化写法

字符输出流:FileWriter

字符输入流:FileReader

复制土味情话.txt 3000遍

使用高效字符流复制文件

字符缓冲流特殊功能复制文件


IO流

就是对数据存储和取出做操作

I:input输入流

o:输出流


文件复制

一 一次读一个字节

文件复制:
    数据源:从哪里读
        a.txt -- 读取数据 -- FileInputStream

    目的地:写到哪里去
        b.txt -- 写出数据 -- FileOutputStream

a.txt

参考代码:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FilecopyDemo1 {
    public static void main(String[] args) throws IOException {
        //创建字节输入流对象

            FileInputStream fis = new FileInputStream("src\\com\\hjl\\test\\day28\\a.txt");


        //创建字节输出流对象

            FileOutputStream fos = new FileOutputStream("src\\com\\hjl\\test\\day28\\b.txt");


        //一次读一个字节
        int b = 0;

        //一次写一个字节
        while ((b=fis.read())!=-1){
            System.out.print(b);
            fos.write(b);
        }

        //释放资源
        fis.close();
        fos.close();
    }
}

输出结果:

1081059711010312297105979899104101108108111106971189710497100111111112

?b.txt


二? 一次读一个字节

将E:\下面的金克斯.jpg复制到G:\盘的根目录下

数据源:
    E:\金克斯.jpg -- 读取数据 -- FileInputStream

目的地:
    G:\金克斯.jpg -- 写出数据 -- FileOutputStream

参考代码:?

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopyDemo2 {
    public static void main(String[] args) throws IOException {
        //创建字节输入流对象
        FileInputStream fis = new FileInputStream("E:\\金克斯.jpg");

        //创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("G:\\金克斯.jpg");

        int b = 0;
        while ((b=fis.read())!=-1){
            fos.write(b);
        }

        //释放资源
        fis.close();
        fos.close();
    }
}

?运行结果:


三 一次读一个字符数组

把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中

数据源:
    a.txt -- 读取数据 -- 字符输入流(字符转换流) -- InputStreamReader

目的地:
    b.txt -- 写出数据 -- 字符输出流(字符转换流) -- OutputStreamWriter

参考代码:

import java.io.*;

public class FileCopyDemo3 {
    public static void main(String[] args) throws IOException {
        //创建字符输入流对象
        InputStreamReader isr = new InputStreamReader(new FileInputStream("src\\com\\hjl\\test\\day28\\a.txt"));

        //创建字符输出流对象
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("src\\com\\hjl\\test\\day28\\b.txt"));

        //一次读写一个字符数组
        char[] chars = new char[1024];
        int length = 0;
        while ((length = isr.read(chars)) != -1) {
            osw.write(chars, 0, length);
            osw.flush();
        }

        //释放资源
        osw.close();
        isr.close();

    }
}

?运行结果:


字符转换流的简化写法

字符输出流:FileWriter

字符输入流:FileReader

字符流 = 字节流 + 编码表
OutputStreamWriter  =  FileOutputStream + 编码表(Unicode)
InputStreamReader = FileInputStream + 编码表(Unicode)

参考代码1:

public class FileCopyDemo5 {
    public static void main(String[] args) throws IOException {
        //创建字符输入流对象
//        InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));

        //创建简化后的字符输入流对象
        FileReader fr = new FileReader("src\\com\\shujia\\hjl\\day28\\a.txt");

        //创建简化后的字符输出流对象
        FileWriter fw = new FileWriter("src\\com\\shujia\\hjl\\day28\\b.txt");

        //第一种方式:一次读写一个字符
//        int c = 0;
//        while ((c=fr.read())!=-1){
//            fw.write(c);
//            fw.flush();
//        }

        //第二种方式:一次读写一个字符数组
        char[] chars = new char[1024];
        int length = 0;
        while ((length=fr.read(chars))!=-1){
            fw.write(chars, 0, length);
            fw.flush();
        }

        //释放资源
        fw.close();
        fr.close();

    }
}

运行结果:


复制土味情话.txt 3000遍

参考代码:

import java.io.*;

public class FileCopyDemo6 {
    public static void main(String[] args) throws IOException {

        //起始时间戳
        long start = System.currentTimeMillis();
        for (int i = 0;i < 3000;i++){
            //创建字符输入流对象
            InputStreamReader isr = new InputStreamReader(new FileInputStream("G:\\JavaTest\\src\\com\\hjl\\test\\day28\\土味情话.txt"));

            //创建字符输出流对象
            OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("G:\\JavaTest\\src\\com\\hjl\\test\\day28\\爱你三千遍.txt"),true);

            char[] chars = new char[1024];
            int length =  0;
            while ((length = isr.read(chars)) !=-1){
                osw.write(chars,0,length);
                osw.flush();
            }
            //释放资源
            osw.close();
            isr.close();
        }

        //结束时间戳
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }
}

输出结果:

1528

运行结果:


使用高效字符流复制文件

BufferedWriter

BufferedReader

import java.io.*;

/*
    使用高效字符流复制文件
 */
public class FileCopyDemo7 {
    public static void main(String[] args) throws IOException {
        //起始时间戳
        long start = System.currentTimeMillis();
        for (int i = 0; i < 3000; i++) {
            BufferedReader br = new BufferedReader(new FileReader("G:\\JavaTest\\src\\com\\hjl\\test\\day28\\土味情话.txt"));

            BufferedWriter bw = new BufferedWriter(new FileWriter("G:\\JavaTest\\src\\com\\hjl\\test\\day28\\爱你三千遍.txt",true));

            //一次读取一个字符数组
            char[] chars = new char[2048];

            int length = 0;
            while ((length = br.read(chars)) != -1) {
                bw.write(chars, 0, length);
                bw.flush();
            }


            //释放资源
            bw.close();
            br.close();
        }
        long end = System.currentTimeMillis();

        System.out.println("总耗费时间:" + (end - start));

    }
}

输出结果;

总耗费时间:1487

运行结果:

相比较上一个而言速度更快


字符缓冲流特殊功能复制文件

void newLine()

String readLine()

参考代码:

import java.io.*;

public class FileCopyDemo8 {
    public static void main(String[] args) throws IOException {
        //创建字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader("G:\\JavaTest\\src\\com\\hjl\\test\\day28\\土味情话.txt"));

        //创建字符缓冲输出流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter("G:\\JavaTest\\src\\com\\hjl\\test\\day28\\土味情话1.txt"));

        String line = null;
        while ((line=br.readLine())!=null){
            bw.write(line);
            bw.newLine();
            bw.flush();
        }

        //释放资源
        bw.close();
        br.close();

    }

}

运行结果:


?到底啦!给靓仔一个关注吧!?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-28 22:46:11  更:2021-12-28 22:46:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:52:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码