read file to String

[code] 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;
}[/code]


[code] 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;
} [/code]




[code] 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;
}[/code]

3个方法去读取一个大于50M的文件,当不设置jvm参数时都OutofMemery,当设置-Xmx128M时。只有方法3 可以通过,设置到-Xmx256M时也只有方法3可以通过,干脆设置512M,都可以了,运行时间如果正常的话一般都在4~5S


[code] public static String ReadFileToString(String url) {
StringBuffer str = new StringBuffer();
BufferedReader in = null;
File inputFile = null;
try {
inputFile = new File(url);

in = new BufferedReader(new InputStreamReader(new FileInputStream(inputFile), "GB2312"));
String line = null;
str = new StringBuffer((int) inputFile.length());

while ((line = in.readLine()) != null) {
str.append(line);
}
in.close();
}
catch (FileNotFoundException e2) {
try {
if (!new File(inputFile.getParent()).exists())
new File(inputFile.getParent()).mkdirs();
inputFile.createNewFile();
}
catch (IOException e) {
e.printStackTrace();
}
}
catch (IOException e3) {
e3.printStackTrace();
}
return str.toString();
}[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值