`
beck5859509
  • 浏览: 110349 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何提高输入输出流的读写效率。

    博客分类:
  • java
 
阅读更多
本文主要介绍我在压缩解压文件的过程中遇到的一些共性问题。

起因:
      文件压缩后,文件接收端自然会进行解压,这里的解压需要根据文件压缩的方式来进行区分。比如文件是按字符压缩还是字节压缩,不过无论是哪种压缩方式。其解压的总体思路大同小意。
    比如按照zip方式压缩。首先创建文件输入流,接着读取输入流,然后再写入输出流中。
    
        InputStream input = zipFile.getInputStream(entry);
        OutputStream output = new FileOutputStream(outFile);
        int temp = 0;
        while((temp = input.read()) != -1){
            output.write(temp);
        }
     

运行过后,写文件速度很慢,分析后发现有两个慢的原因,一个是输入流没有做缓存区处理,另一个是输出流也没有做。修改后:
    
                FileOutputStream fos = new FileOutputStream(entry.getName());
                BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER);
                byte[] data = new byte[1024];
                int count = 0;
                while ((count = zin.read(data, 0, 1024)) != -1) {
                    dest.write(data, 0, count);
                }


再运行会发现写速度明显比之前快多了。根本原因在于不用缓冲区,则每次读一个,再写一个必然会慢。之前只调整写的缓存冲大小,其实提升并不大。
   
0
1
分享到:
评论

相关推荐

    java输入输出流,电子课件

    - BufferedReader 和 BufferedWriter 用于提高读写效率,通过内部缓冲区进行批量操作。 - PipedInputStream 和 PipedOutputStream 用于线程间的通信。 - DataInputStream 和 DataOutputStream 提供了读写基本类型...

    实验9 Java输入输出流.doc

    Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...

    JAVA输入输出流实验报告

    `BufferedReader`和`BufferedWriter`用于提高读写效率,`BufferedReader`通过`readLine()`方法逐行读取源文件内容,`BufferedWriter`则将每一行数据写入目标文件,同时添加`\r\n`来保持换行。 实验过程中,我们学习...

    java中的标准输入输出流

    为了提高读写效率,Java提供了多种包装流和缓冲流。 **4.1 包装流** - **InputStreamReader**: 将字节流转换为字符流。 - **OutputStreamWriter**: 将字符流转换为字节流。 **4.2 缓冲流** - **...

    java输入输出流的两种写法

    Java 输入输出流是Java编程语言中处理数据传输的基础机制,主要负责程序与外部资源(如文件、网络连接等)之间的数据交互。Java 提供了多种类型的流,它们分为两大类:字节流(处理单个字节的数据)和字符流(处理...

    Java_输入输出流及文件读写详解

    Java 输入输出流(I/O 流)是Java平台的核心特性之一,用于处理数据的传输,包括文件读写、网络通信等。在Java API中,I/O流被组织为一系列类和接口,主要位于`java.io`包。在JDK 1.0中引入了字节流(byte stream)...

    Java 输入输出流 源码

    BufferedReader和BufferedWriter用于提高读写效率,通过缓冲区批量处理数据。 4. **转换流**:InputStreamReader和OutputStreamWriter是字节流与字符流之间的桥梁,可以实现两者之间的转换,方便在处理字节数据时...

    输入输出流

    - **BufferedReader/BufferedWriter**:为读写操作提供了缓冲区,可以提高读写效率。`BufferedReader`通常用于读取文本文件,而`BufferedWriter`则用于将文本数据写入文件。 #### 示例分析:`ChineseCharacters....

    java输入输出流学生成绩管理

    4. 如果使用文本文件存储,可以使用`BufferedReader`和`BufferedWriter`提高读写效率: ```java BufferedReader reader = new BufferedReader(new FileReader("scores.txt")); BufferedWriter writer = new ...

    java输入输出流的简单例子

    然后,为了处理文本数据,我们用InputStreamReader和OutputStreamWriter将字节流转换为字符流,并进一步包装成BufferedReader和BufferedWriter,以提高读写效率。通过readLine()方法读取文本文件的每一行,然后用...

    浅谈输入输出流

    ### 浅谈Java输入输出流 #### 一、引言 Java作为一种广泛应用的编程语言,在处理数据时提供了非常强大且灵活的输入输出功能。然而,Java的输入输出操作可能看起来较为复杂,因为开发者通常需要处理多种不同的对象...

    java 输入输出流

    例如,使用`BufferedReader`和`BufferedWriter`可以提高读写效率,因为它们内部都有缓冲区,减少了与磁盘交互的次数。`Scanner`则常用于从用户输入、文件或系统输入中读取数据。 最后,我们可以通过编写简单的Java...

    java输入输出流.ppt

    Java输入输出流(I/O流)是Java编程中不可或缺的一部分,它主要用于程序与外部资源之间的数据传输。在Java中,I/O流的概念被用来抽象各种输入源和输出目标,包括键盘、显示器、文件、网络连接等。I/O流的设计遵循...

    输入输出流介绍

    通过对输入输出流的详细介绍,我们可以清楚地看到,它们不仅提供了更安全、更简便的方式来处理文件和其他形式的数据输入输出,而且还能提高程序的整体效率。输入输出流的设计理念体现了C++在安全性、易用性和性能...

    JAVa输入输出流程序

    Java输入输出流(IO流)是Java编程语言中处理数据传输的核心部分,它允许程序进行数据的读取和写入操作。在Java中,一切皆为流,输入流用于读取数据,而输出流用于写入数据。这些流可以处理各种类型的数据,包括文本...

    文件上传/下载使用输入输出流操作文件

    提供缓冲功能,提高读写效率,减少磁盘I/O次数。 - **DataInputStream** 和 **DataOutputStream**: 支持基本类型(如int、float)的读写,以及字符串的读写。 四、异常处理与资源关闭 在进行文件操作时,必须...

    常用的输入输出流-模拟记事本

    在Java编程语言中,输入输出流(Input/Output Stream)是处理数据传输的核心工具,用于在不同的数据源和目的地之间读写数据。本教程将深入探讨一些常用的输入输出流类,以及如何通过它们来实现一个简单的模拟记事本...

    Java输入输出流以及线程讲解

    除此之外,还有BufferedInputStream和BufferedOutputStream这样的缓冲流,用于提高读写效率。 2. 字符流:字符流是以字符为单位进行操作的,主要由Reader和Writer两大类构成。 FileReader和FileWriter用于读写文件...

    android 字符串输入输出流

    在Android开发中,字符输入输出流(InputStream和OutputStream)是处理数据传输的关键工具,尤其是在读取和写入文件时。本文将深入探讨Android中的字符串输入输出流,以及如何使用它们来实现对文档的操作。 首先,...

    android 文件操作 输入流对象 输出流对象 SDCard读写

    这里主要关注的是如何使用输入流对象(InputStream)和输出流对象(OutputStream)进行SDCard(外部存储卡)的读写操作。下面将详细介绍这些概念和实践中的应用。 1. **Android 文件操作**: Android 提供了丰富的...

Global site tag (gtag.js) - Google Analytics