Java字节流有无缓冲流以及读取方式不同的所对应的时间(四种)

简介: Java字节流有无缓冲流以及读取方式不同的所对应的时间(四种)

测试字节流有无缓冲流以及读取方式不同的速度(四种)


引言:

分别测试: 有无缓冲流一次读取一个字节以及一次读取一个字节数组 (执行速度)

获取时间:

  • currentTimeMillis()

路径:

  • 源文件:D:\计算机语言的简单描述.mp4
  • 目的地:在当前项目 copy.mp4

@[toc]

1. 字节输出流、输入流_读取一个字节

public static void main(String[] args) throws IOException{
   
    //开始时间
    long start = System.currentTimeMillis() ;
    method("D:\\计算机语言的简单描述.mp4","copy.mp4");
    //结束时间
    long end = System.currentTimeMillis() ;
    System.out.println("共耗时"+(end-start)+"毫秒");
}
//使用FileInputStream一次读取一个字节
private static void method(String srcString, String destString) throws IOException {
   
    //创建文件字节输入流对象
    FileInputStream fis = new FileInputStream(srcString) ;
    //文件字节输出流对象
    FileOutputStream fos = new FileOutputStream(destString) ;

    //一次读取一个字节
    int by = 0 ;
    while((by=fis.read())!=-1) {
   
        fos.write(by); 
    }

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

2. 字节输出流、输入流_读取一个字节数组

public static void main(String[] args) throws IOException{
   
    //开始时间
    long start = System.currentTimeMillis() ;
    method("D:\\计算机语言的简单描述.mp4","copy.mp4");
    //结束时间
    long end = System.currentTimeMillis() ;
    System.out.println("共耗时"+(end-start)+"毫秒");
}
//使用FileInputStream一次读取一个字节数组的方式
private static void method(String srcString, String destString) throws IOException {
   
    //文件字节输入流对象
    FileInputStream fis = new FileInputStream(srcString) ;
    FileOutputStream fos = new FileOutputStream(destString) ;
    //一次读取一个字节数组
    int len = 0 ;
    byte[] bytes = new byte[1024] ;
    while((len = fis.read(bytes))!=-1) {
   
        //写数据
        fos.write(bytes,0,len);
    }
    //释放资源
    fos.close();
    fis.close();
}

3. 字节缓冲输出流、输入流_读取一个字节

public static void main(String[] args) throws IOException{
   
     //开始时间
    long start = System.currentTimeMillis() ;
    method("D:\\计算机语言的简单描述.mp4","copy.mp4");
    //结束时间
    long end = System.currentTimeMillis() ;
    System.out.println("共耗时"+(end-start)+"毫秒");
}
//字节缓冲流一次读取一个字节
private static void method(String srcString, String destString) throws IOException {
   
    //创建字节缓冲输入流对象
    BufferedInputStream  bis = new BufferedInputStream(new FileInputStream(srcString)) ;
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destString)) ;
    //一次读取一个字节
    int by  = 0 ;
    while((by=bis.read())!=-1) {
   
        bos.write(by);
    }
    //释放资源
    bos.close();
    bis.close();
}

4. 字节缓冲输出流、输入流_读取一个字节数组

public static void main(String[] args) throws IOException{
   
    //开始时间
    long start = System.currentTimeMillis() ;
    method("D:\\计算机语言的简单描述.mp4","copy.mp4");
    //结束时间
    long end = System.currentTimeMillis() ;
    System.out.println("共耗时"+(end-start)+"毫秒");
}
//字节缓冲流一次读取一个字节数组
private static void method(String srcString, String destString) throws IOException{
   
    //创建字节缓冲输入流对象
    BufferedInputStream  bis = new BufferedInputStream(new FileInputStream(srcString)) ;
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destString)) ;
    //一次读取一个字节数组
    int len = 0 ;
    byte[] bytes = new byte[1024] ;
    while((len = bis.read(bytes))!=-1) {
   
        //写数据
        bos.write(bytes,0,len);
    }
    //释放资源
    bos.close();
    bis.close();
}

总结

FileInputStream FileOutputStream

  • 一次读取一个字节:共耗时114341毫秒

  • 一次读取一个字节数组:共耗时147毫秒

BuffferedInputStream BufferedOutputStream

  • 一次读取一个字节:共耗时685毫秒

  • 一次读取一个字节数组:共耗时57毫秒

目录
相关文章
|
3月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
揭秘Java IO流:字节流与字符流的神秘面纱!
48 1
|
3月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
116 1
|
5月前
|
存储 缓存 Java
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
60 3
|
7月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
【6月更文挑战第26天】Java IO流涵盖字节流和字符流,字节流处理二进制数据,如图像,由InputStream/OutputStream家族管理;字符流处理文本,基于Reader/Writer,适于文本文件。在文件复制示例中,字节流用FileInputStream/FileOutputStream,字符流用FileReader/FileWriter。选择流类型取决于数据类型和处理需求,文本文件优选字符流,二进制数据则选字节流。
86 6
|
7月前
|
存储 编解码 安全
一篇文章讲明白java字符流字节流
一篇文章讲明白java字符流字节流
30 0
|
7月前
|
存储 自然语言处理 Java
Java IO流完全手册:字节流和字符流的常见应用场景分析!
【6月更文挑战第26天】Java IO流涵盖字节流和字符流,字节流用于二进制文件读写及网络通信,如图片和音频处理;字符流适用于文本文件操作,支持多语言编码,确保文本正确性。在处理数据时,根据内容类型选择合适的流至关重要。
97 0
|
7月前
|
自然语言处理 Java
Java IO流进阶教程:掌握字节流和字符流的高级用法!
【6月更文挑战第26天】Java IO流助你高效交换数据,包括字节流(InputStream/OutputStream)和字符流(Reader/Writer)的高级技巧。缓冲流(Buffered*)提升读写性能,对象流(Object*Stream)支持对象序列化。字符流的BufferedReader/BufferedWriter优化文本处理,注意字符集如UTF-8用于编码转换。掌握这些,优化IO操作,提升代码质量。
60 0
|
7月前
|
Java 测试技术
Java IO流深度剖析:字节流和字符流的性能对比!
【6月更文挑战第26天】Java IO流分字节流和字符流,字节流处理所有类型数据(如图片),字符流处理文本(基于Unicode)。字节流直接处理,性能高,适合非文本文件;字符流处理文本时考虑编码,适合文本文件。性能测试显示,字节流在读写非文本文件时更快,而字符流在处理文本时更方便。选择流类型应依据数据类型和需求。
86 0
|
7月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
【6月更文挑战第26天】Java IO流涵盖字节流与字符流。字节流(InputStream/OutputStream)处理数据单位为字节,适用于二进制和文本,而字符流(Reader/Writer)专注于文本,处理单位为字符,处理编码转换。字符流在字节流基础上添加编码处理,以装饰器模式实现。文件复制示例展示了两者区别:字节流直接复制所有数据,字符流处理字符编码。理解并选择适当流类型对优化程序至关重要。
157 0
|
7月前
|
Java
java使用基本流和缓冲流操作文件时间对比
java使用基本流和缓冲流操作文件时间对比