`
roygbip
  • 浏览: 19914 次
文章分类
社区版块
存档分类
最新评论

一个io文件读写的效率

 
阅读更多

其实很简单,今天看了一个使用字符和字节不同读取和存取的例子:

 private static void testOne(String filename) throws IOException {
  
  FileInputStream fio=new FileInputStream(filename);
  byte [] byt=new byte[8094];
  int t;
  StringBuffer sb=new StringBuffer();
  while ((t=fio.read(byt))!=-1) {
   sb.append(byt);
  }

  fio.close();
 }
 private static void testTwo(String filename) throws IOException{
  
  BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
  
  StringBuffer sb=new StringBuffer();
  String str;
  str=br.readLine();
  while ((str=br.readLine())!=null) {
    sb.append(str);
  }
  br.close();
 }

方法testTwo的效率底就不用说了,但是在我使用一个大文件测试的时候,居然会出现OutofMemErr,如果说前面的读取的时候方式不同,但是存储有什么不同呢,看了下源码,StringBuffer在使用append方法时候,会使用内部缓冲区,如果溢出,则会申请新的缓冲数组,但是它和第一个方法那里不一样呢,在调用上,为什么它会报错溢出,第一个不会?

下午仔细跟踪了一下,发现原来是由于StringBuffer中对于字符和字节两种方式存储大小是不同的。至于为什么会不同,还有待进一步学习.

分享到:
评论
2 楼 roygbip 2007-04-03  
b0r0j0:
sb.append(byt);//是可以的,它会对这个Object对象进行toString()转化.
1 楼 b0r0j0 2007-03-01  
第一种方法行不通吧··
  while ((t=fio.read(byt))!=-1) {
   sb.append(byt);//这里应该是 sb.append(new String(byt,0,t))才对吧,重新测一下
  }

相关推荐

    java io读写文件

    根据给定的信息,我们可以深入探讨Java IO操作中的文件读写技术,特别关注如何从一个文本文件中筛选数据并保存到另一个文件中。 ### Java IO读写文件基础 在Java中,进行文件读写的操作通常涉及两个核心包:`java....

    java的io流文件读写

    Java的IO流是Java平台提供的一种处理输入输出数据的重要机制,尤其在文件读写方面,它扮演着核心角色。对于初学者来说,理解和掌握Java IO流的使用是学习Java编程的基础,也是进阶到更复杂系统开发的关键一步。 ...

    Python中使用asyncio 封装文件读写

    这个方法允许我们在事件循环中安排一个回调函数,以便在适当的时候执行文件读写操作。 ```python def read_step(self, future, n, total): res = self.fd.read(n) if res is None: self.loop.call_soon(self....

    Java IO学习基础之读写文本文件

    Java IO(Input/Output)是Java中处理输入输出操作的核心包,它主要提供了文件读写、网络通信等基本功能。Java IO操作主要基于流的概念进行,分为字节流和字符流两大类。在实际开发中,为了提高读写效率,经常使用...

    Java io 读写文件

    而`BufferedReader`则是一个字符流类,它通过缓冲区提高读取效率。下面我们将深入探讨这些概念以及如何使用它们来实现文件的读写。 1. **文件读写基础** - Java中的IO模型基于流的概念,流是数据传输的抽象,可以...

    文件的IO异步读写操作

    在IT领域,文件的输入/输出(Input/Output, IO...总结来说,异步IO操作是提高程序性能和响应性的重要手段,尤其在处理文件读写和删除等IO密集型任务时。理解和熟练运用异步编程技术,能够使我们的应用更加高效和健壮。

    Linux-kernel-file-IO.rar_Linux IO_linux 文件读写_linux读写文件_文件io_简单内核

    2. **VFS(虚拟文件系统)层**:Linux的VFS层是文件系统的一个抽象,它为各种不同的文件系统提供了一个统一的接口。VFS层处理文件打开、关闭、读写等操作,并将这些请求转发到相应的文件系统驱动。 3. **read()和...

    Java IO 基础操作(文件读写和移动)

    对于文件读写,Java提供了多种流类。基础的文件读取可以使用`BufferedReader`和`FileReader`组合,而写入则使用`BufferedWriter`和`FileWriter`。以下是一个简单的读写示例: ```java // 读取文件 FileReader fr = ...

    重叠IO实现的大文件读写.zip_C++读写大文件_c#大文件_大文件 c_大文件读写_读写大文件

    本文将深入探讨如何使用C++和C#这两种编程语言实现高效的大文件读写操作,以及重叠I/O(Overlapped I/O)技术的应用。 首先,C++和C#都提供了多种方法来读写大文件。在C++中,`fstream`库是处理文件的基础,包括`...

    IO流、Xml解析

    例如,FileInputStream和FileOutputStream用于读写文件,BufferedReader和BufferedWriter用于提高读写效率,ObjectInputStream和ObjectOutputStream则支持序列化和反序列化对象。 XML(eXtensible Markup Language...

    java IO流实例,包括文件的读写、上传和下载

    在Java编程语言中,IO...通过组合不同的流类,可以实现复杂的文件读写、上传和下载任务,同时适应文本和非文本数据的处理需求。在实际应用中,还需要考虑错误处理、资源管理等实践问题,确保程序的稳定性和效率。

    C#文件的读写c#基础中文件读写课程中一些常用类

    本文将深入探讨C#中处理文件读写的一些常用类,主要包括`System.IO.File`和`System.IO.FileInfo`,以及它们提供的各种方法。 1. **System.IO.File 类** - `File.Open()`:这个方法用于打开一个现有的文件或创建一...

    Properties文件读写;Property文件读写;Property

    3. **写入Properties文件**:为了更新或添加新的属性,`PropertyUtil.java`可能有一个`saveProperties(Properties props, String filePath)`方法,它接受一个`Properties`对象和文件路径,然后使用`Properties`的`...

    C#文件读写操作

    在C#编程语言中,文件读写操作是基础且至关重要的功能,允许程序与本地文件系统交互。本文将深入探讨如何在C#中执行文件的读写操作,以及如何进行文件删除。 首先,让我们了解C#中用于文件操作的主要类:`System.IO...

    io读写.zip

    在你的项目中,“io读写.zip”似乎包含了实现一个模拟系统的过程,该系统用于管理年级、班级、学生和老师的信息。这个系统允许通过控制台进行数据录入,并能将输入的数据读取出来展示。我们将主要探讨Java中的文件流...

    安卓读写GPIO,用于对硬件IO口进行读写

    考虑到压缩包文件名为"project-architecture",这通常代表一个项目或库的结构设计。在实际开发中,GPIO相关的项目架构可能包含以下几个部分: 1. **GPIO服务(Service)**:负责初始化GPIO,处理读写请求,以及设备...

    标准输入输出和文件IO的区别

    标准输入输出是ANSI C建立的一个标准IO模型,是一个标准函数包和stdio.h头文件中的定义。标准IO库处理很多细节,例如缓存分配,以优化长度执行IO等。标准IO提供了三种类型的缓存:全缓存、行缓存和不带缓存。全缓存...

    Linux文件IO跟标准IO总结

    - **文件I_O操作.pdf**:这个文件可能会介绍Linux下文件IO的各种操作,如文件打开、关闭、读写以及相关的系统调用和错误处理。 通过阅读这些文档,初学者可以更全面地了解Linux下的IO机制,以便在实际编程中选择最...

    文件读写替换行

    在C#编程中,文件读写和文本替换是常见的操作,尤其在处理数据存储、日志记录或文本处理等场景中。本篇文章将详细介绍如何利用C#进行文件读写,并针对特定内容进行匹配和替换。 首先,让我们了解C#中的基本文件操作...

Global site tag (gtag.js) - Google Analytics