栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java的IO流(字节流,字符流)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java的IO流(字节流,字符流)

java的IO流

InputStream的常用方法

OutputStream的常用方法

所有案例代码为文件1.txt复制为1c.txt 字节流 文件复制
import java.io.*;

public class Copy_1 {
    public static void main(String[] args) throws Exception {

        // 创建一个字节输入流,用于读取当前目录下source文件夹中的文件
        InputStream in = new FileInputStream("1.txt");

        // 创建一个文件字节输出流,用于将读取的数据写入target目录下的文件中
        OutputStream out = new FileOutputStream("1c.txt");

        int len; // 定义一个int类型的变量len,记住每次读取的一个字节

        // 获取拷贝文件前的系统时间
        long begintime = System.currentTimeMillis();

        while ((len = in.read()) != -1) { // 读取一个字节并判断是否读到文件末尾
            // System.out.print(len + " ");
            out.write(len); // 将读到的字节写入文件
        }

        // 获取文件拷贝结束时的系统时间
        long endtime = System.currentTimeMillis();

        System.out.println("拷贝文件所消耗的时间是:" + (endtime - begintime) + "毫秒");

        in.close();
        out.close();
    }
}

文件复制优化
import java.io.*;

public class Copy_2 {
    public static void main(String[] args) throws Exception {
        // 创建一个字节输入流,用于读取当前目录下source文件夹中的文件
        InputStream in = new FileInputStream("1.txt");

        // 创建一个文件字节输出流,用于将读取的数据写入当前目录的target文件中
        OutputStream out = new FileOutputStream("1c.txt");

        // 以下是用缓冲区读写文件
        byte[] buff = new byte[1024]; // 定义一个字节数组,作为缓冲区

        // 定义一个int类型的变量len记住读取读入缓冲区的字节数
        int len;

        long begintime = System.currentTimeMillis();
        while ((len = in.read(buff)) != -1) { // 判断是否读到文件末尾
            // System.out.print(len + " ");
            out.write(buff, 0, len); // 从第一个字节开始,向文件写入len个字节
        }

        long endtime = System.currentTimeMillis();

        System.out.println("拷贝文件所消耗的时间是:" + (endtime - begintime) + "毫秒");
        in.close();
        out.close();
    }
}

用字节数组作为缓冲区读/写文件可以有效提高程序的执行效率。

字符流 文件复制
import java.io.*;

public class File_read {
    public static void main(String[] args) throws Exception {
        // 创建一个FileReader对象用来读取文件中的字符
        FileReader reader = new FileReader("1.txt");

        // 创建一个FileWriter对象用于向文件中写入数据
        FileWriter writer = new FileWriter("1c.txt");

        int ch; // 定义一个变量用于记录读取的字符
        while ((ch = reader.read()) != -1) { // 循环判断是否读取到文件的末尾
            // System.out.print(ch + " ");
            writer.write((char) ch); // 将字符数据写入到文本文件中
        }

        reader.close(); // 关闭文件读取流,释放资源
        writer.close(); // 关闭写入流,释放资源
    }
}


文件复制优化
import java.io.*;

public class Line_read {
    public static void main(String[] args) throws Exception {
        FileReader reader = new FileReader("1.txt");
        // 创建一个BufferedReader缓冲对象
        BufferedReader br = new BufferedReader(reader);
        FileWriter writer = new FileWriter("1c.txt");
        
        // 创建一个BufferdWriter缓冲区对象
        BufferedWriter bw = new BufferedWriter(writer);
        String str;
        // 每次读取一行文本,判断是否到文件末尾
        while ((str = br.readLine()) != null) {
            bw.write(str);
            // 写入一个换行符,该方法会根据不同的操作系统生成相应的换行符
            bw.newline();
        }
        br.close();
        bw.close();
    }
}

在BufferedReader中有一个重要的方法readLine(),该方法用于一次读取一行文本


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号