public static String loadAFileToStringDE1(File f) throws IOException {
long beginTime = System.currentTimeMillis();
InputStream is = null;
String ret = null;
try {
is = new BufferedInputStream( new FileInputStream(f) );
long contentLength = f.length();
ByteArrayOutputStream outstream = new ByteArrayOutputStream( contentLength > 0 ? (int) contentLength : 1024);
byte[] buffer = new byte[4096];
int len;
while ((len = is.read(buffer)) > 0) {
outstream.write(buffer, 0, len);
}
outstream.close();
ret = outstream.toString();
//byte[] ba = outstream.toByteArray();
//ret = new String(ba);
} finally {
if(is!=null) {try{is.close();} catch(Exception e){} }
}
long endTime = System.currentTimeMillis();
System.out.println("方法1用时"+ (endTime-beginTime) + "ms");
return ret;
}
public static String loadAFileToStringDE2(File f) throws IOException {
long beginTime = System.currentTimeMillis();
InputStream is = null;
String ret = null;
try {
is = new FileInputStream(f) ;
long contentLength = f.length();
byte[] ba = new byte[(int)contentLength];
is.read(ba);
ret = new String(ba);
} finally {
if(is!=null) {try{is.close();} catch(Exception e){} }
}
long endTime = System.currentTimeMillis();
System.out.println("方法2用时"+ (endTime-beginTime) + "ms");
return ret;
}
public static String loadAFileToStringDE3(File f) throws IOException {
long beginTime = System.currentTimeMillis();
BufferedReader br = null;
String ret = null;
try {
br = new BufferedReader(new FileReader(f));
String line = null;
StringBuffer sb = new StringBuffer((int)f.length());
while( (line = br.readLine() ) != null ) {
sb.append(line).append(LINE_BREAK);
}
ret = sb.toString();
} finally {
if(br!=null) {try{br.close();} catch(Exception e){} }
}
long endTime = System.currentTimeMillis();
System.out.println("方法3用时"+ (endTime-beginTime) + "ms");
return ret;
}
3个方法去读取一个大于50M的文件,当不设置jvm参数时都OutofMemery,当设置-Xmx128M时。只有方法3 可以通过,设置到-Xmx256M时也只有方法3可以通过,干脆设置512M,都可以了,运行时间如果正常的话一般都在4~5S
分享到:
相关推荐
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileOperation { public static void...
import java.io.*; /** * FileUtil. Simple file operation class. * * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /**...
import java.io.File; import java.io.FileInputStream; import java.util.Properties; public class ReadConfigation{ /** * 属性文件全名 */ private static final String PFILE ="Config....
* 功能:Java读取txt文件的内容 * 步骤:1:先获得文件句柄 * 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取 * 3:读取到输入流后,需要读取生成字节流 * 4:一行一行的输出。readline...
import java.io.FileNotFoundException; import java.io.FileReader; ... System.out.println("找不到指定的文件"); }catch(Exception ee){ System.out.println("文件读取错误"); } } }
读取txt文件,统计“java”字符串出现的次数
3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作 4) PipedInputStream:实现了pipe的概念,主要在线程中使用 5) SequenceInputStream:把多个InputStream合并为一个InputStream 2) Out ...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
在Java的IO中,所有的stream(包括Input和Out stream)都包括两种类型: 1.1 以字节为导向的stream 以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种...
Java仿Windows 窗口化复制文件功能, class SelectFileListener implements ActionListener { ... //将读取的字节数组写入目标文件输出流中 } fin.close(); //关闭输入流 fout.close(); //关闭输出流
import java.io.*; import java.util.*; import java.util.zip.Adler32; import java.util.zip.CheckedInputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip....
// 读取文件 for (int i = 0; i ; i++) { System.out.print((char) cont[i]); } is.close();// 关闭文件 // 保存文件 File file2 = new File("bbb.txt");// 定位文件 OutputStream os...
读取PDF文件中的信息 package com.zht; import java.io.File; import java.io.UnsupportedEncodingException; import java.sql.Connection; import java.sql.DriverManager; import java.sql....
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: ...流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。... 可以用于多线程下载或多个线程同时写数据到文件。
将ChenminDiskIDJoc.jar 加入环境变量 这两个文件放入window 文件夹 或者JDK的bin文件夹 或者你的应用文件夹 DiskID32.dll DiskID.dll <br> public static String chenmin.io.DiskID.Factory() 返回硬盘...
.CSV文件是以逗号分割的数据仓储,读取数据时从每一行中读取一条数据元祖,也是一条数据,再用字符分割的方式获取表中的每一个数据项。 import java.io.BufferedReader; import java.io.FileReader; ...
主要介绍了java IO流 之 输入流 InputString()的使用,以及读取数据的三种方式详解,非常不错,需要的朋友可以参考下
* 实现将文件读取到一个byte数组 */ public static byte[] read2(String filename){ try{ InputStream in = new FileInputStream(filename); byte[] buf = new byte[in.available()]; in.read(buf); in....