其实很简单,今天看了一个使用字符和字节不同读取和存取的例子:
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中对于字符和字节两种方式存储大小是不同的。至于为什么会不同,还有待进一步学习.
分享到:
相关推荐
根据给定的信息,我们可以深入探讨Java IO操作中的文件读写技术,特别关注如何从一个文本文件中筛选数据并保存到另一个文件中。 ### Java IO读写文件基础 在Java中,进行文件读写的操作通常涉及两个核心包:`java....
Java的IO流是Java平台提供的一种处理输入输出数据的重要机制,尤其在文件读写方面,它扮演着核心角色。对于初学者来说,理解和掌握Java IO流的使用是学习Java编程的基础,也是进阶到更复杂系统开发的关键一步。 ...
这个方法允许我们在事件循环中安排一个回调函数,以便在适当的时候执行文件读写操作。 ```python def read_step(self, future, n, total): res = self.fd.read(n) if res is None: self.loop.call_soon(self....
Java IO(Input/Output)是Java中处理输入输出操作的核心包,它主要提供了文件读写、网络通信等基本功能。Java IO操作主要基于流的概念进行,分为字节流和字符流两大类。在实际开发中,为了提高读写效率,经常使用...
而`BufferedReader`则是一个字符流类,它通过缓冲区提高读取效率。下面我们将深入探讨这些概念以及如何使用它们来实现文件的读写。 1. **文件读写基础** - Java中的IO模型基于流的概念,流是数据传输的抽象,可以...
在IT领域,文件的输入/输出(Input/Output, IO...总结来说,异步IO操作是提高程序性能和响应性的重要手段,尤其在处理文件读写和删除等IO密集型任务时。理解和熟练运用异步编程技术,能够使我们的应用更加高效和健壮。
2. **VFS(虚拟文件系统)层**:Linux的VFS层是文件系统的一个抽象,它为各种不同的文件系统提供了一个统一的接口。VFS层处理文件打开、关闭、读写等操作,并将这些请求转发到相应的文件系统驱动。 3. **read()和...
对于文件读写,Java提供了多种流类。基础的文件读取可以使用`BufferedReader`和`FileReader`组合,而写入则使用`BufferedWriter`和`FileWriter`。以下是一个简单的读写示例: ```java // 读取文件 FileReader fr = ...
本文将深入探讨如何使用C++和C#这两种编程语言实现高效的大文件读写操作,以及重叠I/O(Overlapped I/O)技术的应用。 首先,C++和C#都提供了多种方法来读写大文件。在C++中,`fstream`库是处理文件的基础,包括`...
例如,FileInputStream和FileOutputStream用于读写文件,BufferedReader和BufferedWriter用于提高读写效率,ObjectInputStream和ObjectOutputStream则支持序列化和反序列化对象。 XML(eXtensible Markup Language...
在Java编程语言中,IO...通过组合不同的流类,可以实现复杂的文件读写、上传和下载任务,同时适应文本和非文本数据的处理需求。在实际应用中,还需要考虑错误处理、资源管理等实践问题,确保程序的稳定性和效率。
本文将深入探讨C#中处理文件读写的一些常用类,主要包括`System.IO.File`和`System.IO.FileInfo`,以及它们提供的各种方法。 1. **System.IO.File 类** - `File.Open()`:这个方法用于打开一个现有的文件或创建一...
3. **写入Properties文件**:为了更新或添加新的属性,`PropertyUtil.java`可能有一个`saveProperties(Properties props, String filePath)`方法,它接受一个`Properties`对象和文件路径,然后使用`Properties`的`...
在C#编程语言中,文件读写操作是基础且至关重要的功能,允许程序与本地文件系统交互。本文将深入探讨如何在C#中执行文件的读写操作,以及如何进行文件删除。 首先,让我们了解C#中用于文件操作的主要类:`System.IO...
在你的项目中,“io读写.zip”似乎包含了实现一个模拟系统的过程,该系统用于管理年级、班级、学生和老师的信息。这个系统允许通过控制台进行数据录入,并能将输入的数据读取出来展示。我们将主要探讨Java中的文件流...
考虑到压缩包文件名为"project-architecture",这通常代表一个项目或库的结构设计。在实际开发中,GPIO相关的项目架构可能包含以下几个部分: 1. **GPIO服务(Service)**:负责初始化GPIO,处理读写请求,以及设备...
标准输入输出是ANSI C建立的一个标准IO模型,是一个标准函数包和stdio.h头文件中的定义。标准IO库处理很多细节,例如缓存分配,以优化长度执行IO等。标准IO提供了三种类型的缓存:全缓存、行缓存和不带缓存。全缓存...
- **文件I_O操作.pdf**:这个文件可能会介绍Linux下文件IO的各种操作,如文件打开、关闭、读写以及相关的系统调用和错误处理。 通过阅读这些文档,初学者可以更全面地了解Linux下的IO机制,以便在实际编程中选择最...
在C#编程中,文件读写和文本替换是常见的操作,尤其在处理数据存储、日志记录或文本处理等场景中。本篇文章将详细介绍如何利用C#进行文件读写,并针对特定内容进行匹配和替换。 首先,让我们了解C#中的基本文件操作...