我在读一张图片时出现了内存溢出的错误,始终找不到怎么解决,有知道的来指导下~谢谢啦public static String fileToString(File file){
StringBuffer buff = null;
try {
buff = new StringBuffer();
buff.setLength((int) file.length());
String encoding = "UTF-8"; //file的编码方式
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), encoding); //指定以encoding的方式读取流,防止出现乱码
BufferedReader reader = new BufferedReader(isr);
String line = null;
while ((line = reader.readLine()) != null){
buff.append(line);
}
reader.close();
isr.close();
} catch (Exception e) {
e.printStackTrace();
}
return buff.toString();
}
错误提示:09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:97)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:155)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.StringBuffer.append(StringBuffer.java:214)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.gzhdi.android.cloudfiles.utils.UserUtils.fileToString(UserUtils.java:581)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.gzhdi.android.cloudfiles.utils.UserUtils.judgeFileChanged(UserUtils.java:513)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.gzhdi.android.cloudfiles.ui.MainActivity.onRestart(MainActivity.java:261)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1139)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.Activity.performRestart(Activity.java:3785)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.Activity.performResume(Activity.java:3796)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3059)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3099)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1958)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.os.Handler.dispatchMessage(Handler.java:99)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.os.Looper.loop(Looper.java:123)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.ActivityThread.main(ActivityThread.java:4595)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.reflect.Method.invokeNative(Native Method)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.reflect.Method.invoke(Method.java:521)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at dalvik.system.NativeStart.main(Native Method)
StringBuffer buff = null;
try {
buff = new StringBuffer();
buff.setLength((int) file.length());
String encoding = "UTF-8"; //file的编码方式
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), encoding); //指定以encoding的方式读取流,防止出现乱码
BufferedReader reader = new BufferedReader(isr);
String line = null;
while ((line = reader.readLine()) != null){
buff.append(line);
}
reader.close();
isr.close();
} catch (Exception e) {
e.printStackTrace();
}
return buff.toString();
}
错误提示:09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:97)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:155)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.StringBuffer.append(StringBuffer.java:214)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.gzhdi.android.cloudfiles.utils.UserUtils.fileToString(UserUtils.java:581)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.gzhdi.android.cloudfiles.utils.UserUtils.judgeFileChanged(UserUtils.java:513)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.gzhdi.android.cloudfiles.ui.MainActivity.onRestart(MainActivity.java:261)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1139)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.Activity.performRestart(Activity.java:3785)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.Activity.performResume(Activity.java:3796)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3059)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3099)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1958)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.os.Handler.dispatchMessage(Handler.java:99)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.os.Looper.loop(Looper.java:123)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at android.app.ActivityThread.main(ActivityThread.java:4595)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.reflect.Method.invokeNative(Native Method)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at java.lang.reflect.Method.invoke(Method.java:521)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-13 17:18:11.289: ERROR/AndroidRuntime(24173): at dalvik.system.NativeStart.main(Native Method)
解决方案 »
- android 编译frameworks/base/中的模块
- android移动数据上网的开关的实现
- Unable to execute dex: Target out of range
- android listview异步记载图片,不卡顿,不图片乱的问题怎么解决?
- 为什么我昨天还能启动虚拟机,今天就不行了
- Android中,通过串口监测传感器信息~求教……
- 如何把EditText与百度或谷歌的搜索关联???
- 编译android源码时碰到如下错误,哪位知道如何解决么?
- 如果在可展开列表中的二级目录加了按钮,可展开列表中怎么能添加展开目录下面按钮的?
- 网络摄像头 软件终端app二次开发
- android 文件下载时 奇怪的停止
- 如何防止用户kill掉进程造成的异常?
分段读写
要拿出来显示的话,还是乖乖option
这句话限制了你的buff的长度,当你读取文件的并加入buff是超过设置的长度,建议你用字节流读取,不要一层层封装!