`
jiang_918
  • 浏览: 4542 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

分块读取文件

阅读更多
package filereader;

import java.io.IOException;
import java.io.InputStream;
import java.nio.channels.FileChannel;
import java.util.Arrays;

public class FileReader {
	public static int SIZE = 1024 * 1024 * 5;

	public static String FILENAME = "homeuser.unl";

	public static long bt;

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			
			 bt = System.currentTimeMillis(); 
			 InputStream is = FileReader.class.getResourceAsStream(FILENAME); 
			 readFile(is);
			 System.out.println(System.currentTimeMillis()-bt+":MS");
			 
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void readFile(InputStream is) throws IOException {
		byte[] buffer = new byte[SIZE];
		StringBuffer sb = new StringBuffer();
		int r = 0;
		int i = 0;
		while (is.available() > 0) {
			i++;
			String partContent = readPartFile(is, buffer, SIZE,  sb);
			sb = null;
			//System.out.println(i + "\n" + partContent);
		}
		System.out.println("I: " + i);
	}

	public static String readPartFile(InputStream inputStream, byte[] buffer,
			int size, StringBuffer sb) {
		try {
			InputStream is = inputStream;
			int r = is.read(buffer);
			if (r == size) {
				byte[] other;
				int count = 0;
				byte n = (byte) is.read();
				other = new byte[] { n };
				sb.append(new String(buffer));
				sb.append(new String(other));
				while (n != 10 && n != -1) {
					count++;
					n = (byte) is.read();
					other = new byte[] { n };
					sb.append(new String(other));
				}
				if (count != 0) {
					SIZE += count;
				}
				System.out.println("COUNT: " + count);
			} else {
				if (null == sb)
					sb = new StringBuffer();
				zjRead(r, sb, buffer);
			}
			return sb.toString();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	private static void zjRead(int r, StringBuffer sb, byte[] buffer) {
		byte[] temp = new byte[r];
		System.arraycopy(buffer, 0, temp, 0, r);
		sb.append(new String(temp));
	}

}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    linux 分块读取文件

    linnux下可用标准C接口,分块读取文件,可编译 .so文件

    c++_多进程对文件进行分块读取并进行系统调用

    用c++实现了多进程对文件的分块读取,并把读取的内容通过c++库函数对LINUX下的命令进行了系统调用

    C实现的分块读取较大文件

    一个用C语言实现的分块读取文件程序,能有效的解决读取较大文件时间过久的问题

    Python多进程分块读取超大文件的方法

    本文实例讲述了Python多进程分块读取超大文件的方法。分享给大家供大家参考,具体如下: 读取超大的文本文件,使用多进程分块读取,将每一块单独输出成文件 # -*- coding: GBK -*- import urlparse import datetime...

    C#利用缓存分块读写大文件

    此外,文章提到了编码转换,这是因为在读写文件时,涉及到文本数据和字节数据之间的转换。示例中使用了UTF8编码,这是因为UTF8编码是一种广泛使用的字符编码,它既支持ASCII字符集,也支持大多数国家的字符集。 ...

    前端Javascript+Html5+后端PHP分块上传文件

    前端Javascript+Html5+后端PHP分块上传文件,PHP分块上传大文件,该项目可以正常运行,入口为index.html,需要正确配置fileDir的读写权限 目前有测试过上传1.5G左右的没有问题(未测试更大的文件),理论上更大的...

    GDAL分块读取大图像

    利用GDAL分块读取大图像,例子是计算一个栅格图像的NDVI值,采用分块读取的方法。

    python多线程分块读取文件

    本文实例为大家分享了python多线程分块读取文件的具体代码,供大家参考,具体内容如下 # _*_coding:utf-8_*_ import time, threading, ConfigParser ''' Reader类,继承threading.Thread @__init__方法初始化 @run...

    Python 多线程不加锁分块读取文件的方法

    ### Python多线程不加锁分块读取文件的方法 #### 概述 在进行文件处理时,特别是在处理大型文件时,使用多线程技术能够显著提高程序的执行效率。然而,多线程环境下文件的读取操作如果不加以适当管理,则可能会...

    Python读写文件方法读取各种类型文件

    ### Python读写文件方法读取各种类型文件 #### 一、概述 在Python编程中,对文件的操作是一项基本且重要的技能。无论是简单的文本文件还是复杂的二进制文件,Python都提供了丰富的工具和方法来帮助开发者高效地...

    delphi读取文件流

    在这个改进版本中,我们使用了一个循环来分块读写文件,这样可以有效降低内存占用,适合处理大型文件。 总结,Delphi中的`TFileStream`提供了方便的文件流操作,通过它我们可以高效地读取、写入文件。结合字节数组...

    Python分块拆分txt文件中的数据.zip

    Python提供了分块读取文件的方法,如使用`open()`函数的`readline()`、`readlines()`或`for`循环配合`file对象`来逐行读取。这样可以有效控制内存使用,避免因文件过大导致的问题。 2. **使用`itertools.islice()`*...

    gdal读写图像分块处理

    GDAL还提供了一种称为内存映射的技术,它可以将磁盘上的图像文件映射到内存中,如同文件已经全部加载到内存一样,但实际只是在需要时才从磁盘读取数据。这种方法极大地提高了数据访问效率,尤其是在处理大规模图像时...

    读写文件读取文件操作读取文件操作读取文件操作读取文件操作

    对于大文件,一次性读取可能导致内存压力过大,此时可以采用逐行读取或分块读取策略。例如,使用`for line in file:`迭代文件对象,每次只处理一行。 六、并发读取 在多线程或多进程环境中,多个线程或进程同时...

    VC++读写大型二进制文件

    在上述代码中,我们创建了一个固定大小的缓冲区,并在循环中分块读写文件。这确保了即使文件非常大,也不会一次性加载所有数据到内存。 在实际应用中,还需要考虑错误处理和异常安全。例如,当打开文件失败、读写...

    android 中读取较大的TXT文件

    一种常用的方法是使用`InputStream`和`BufferedReader`来分块读取文件,而不是一次性加载整个文件到内存中。 以下是一个示例代码,演示了如何分块读取TXT文件: ```java public void readFile(String filePath) { ...

    py源码实例Python分块拆分txt文件中的数据

    2. **分块读取**:利用上面介绍的方法分块读取文件。 3. **数据提取**:根据日志文件的具体格式提取所需数据。 4. **数据处理**:对提取的数据进行统计分析。 5. **生成报告**:将结果整理成报表形式,例如使用`...

    大文件分块上传程序

    通过libcurl,我们可以轻松实现文件的分块读取和上传,同时它还支持错误处理和重试机制,提高了文件传输的可靠性。 在分块上传的过程中,程序首先会将大文件分割成若干个小块(通常根据网络状况和服务器限制来确定...

    分块读取Blob字段数据演示(Delphi + Oracle)

    分块读取Blob字段是优化大量数据传输的有效策略,避免一次性加载大文件导致内存压力过大。 首先,`createTable.sql` 文件可能包含了创建包含Blob字段的Oracle表的SQL语句。通常,这样的语句会类似于: ```sql ...

Global site tag (gtag.js) - Google Analytics