java io读取文件到String

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航