• Java中的IO流


    一、分类

    java中的流分为字节流和字符流,按照流向也可以分为输入流和输出流。

    字符流和字节流的使用范围:字节流一般用来处理图像,视频,以及PPT,Word类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,字节流可以用来处理纯文本文件,但是字符流不能用于处理图像视频等非文本类型的文件。

    处理流BufferedReader,BufferedWriter,BufferedInputStream,BufferedOutputsStream,都要包上一层节点流。也就是说处理流是在节点流的基础之上进行的,带有Buffered的流又称为缓冲流,缓冲流处理文件的输入输出的速度是最快的。所以一般缓冲流的使用比较多。

    
    
    package com.javaBase.IO;

    import java.io.*;

    /**
    * 〈一句话功能简述〉;
    * 〈功能详细描述〉
    *
    * @author jxx
    * @see [相关类/方法](可选)
    * @since [产品/模块版本] (可选)
    */
    public class BufferFileCopy {

    public static void main(String[] args){
    File src = new File("1.txt");
    File dest = new File("2.txt");

    fileCopy2(src,dest);
    }

    /**
    * 使用字符流文件复制
    * @param src
    * @param dest
    */
    public static void fileCopy1(File src, File dest) {
    FileReader fr = null;
    FileWriter fw = null;
    BufferedReader br = null;
    BufferedWriter bw = null;
    try {
    fr = new FileReader(src);
    fw = new FileWriter(dest);
    br = new BufferedReader(fr);
    bw = new BufferedWriter(fw);

    String str = null;

    while ((str = br.readLine()) != null) {
    bw.write(str);
    bw.newLine();
    bw.flush();
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {
    if(br != null) br.close();
    if(bw != null) bw.close();
    if(fw != null) fw.close();
    if(fr != null) fr.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

    /**
    * 使用字节流文件复制
    * @param src
    * @param dest
    */
    public static void fileCopy2(File src, File dest) {
    FileInputStream fis = null;
    FileOutputStream fos = null;
    BufferedInputStream bis = null;
    BufferedOutputStream bos = null;

    try {
    fis = new FileInputStream(src);
    fos = new FileOutputStream(dest);
    bis = new BufferedInputStream(fis);
    bos = new BufferedOutputStream(fos);

    int len;
    byte[] b = new byte[1024];
    while((len = bis.read(b)) != -1) {
    //bis.read(b) 将读取的字节写入数组,返回写入的长度(len),最长写入1024个字节
    bos.write(b,0,len);
    bos.flush();
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {
    if(fis != null) fis.close();
    if(fos != null) fos.close();
    if(bis != null) bis.close();
    if(bos != null) bos.close();
    } catch (IOException e) {
    e.printStackTrace() ;
    }
    }
    }
    }
     
  • 相关阅读:
    解决junit @RunWith无法使用的问题
    git .gitignore 有时不起作用的问题
    Docker常用命令 InsaneLoafer
    NOI2021 退役记
    2021“MINIEYE杯”中国大学生算法设计超级联赛 第二场 题解
    2021“MINIEYE杯”中国大学生算法设计超级联赛 第一场 题解
    数位DP
    Windows下Jmeter安装配置
    Linux安装docker-compose
    Ubuntu卸载MySQL
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/IO.html
Copyright © 2020-2023  润新知