自己测试了下,读取过程中报异常:Out of memory
D/AndroidRuntime( 364): Shutting down VM
W/dalvikvm( 364): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime( 364): FATAL EXCEPTION: main
E/AndroidRuntime( 364): java.lang.OutOfMemoryError测试环境:
android版本:2.3
内存:800M
CPU:800Mhz测试代码:
FileInputStream file_read = new FileInputStream(file);
StringBuffer sb = new StringBuffer();
int i;
char c;
while((i = file_read.read()) != -1)
{
c = (char)i;
sb.append(c);
}
请问下各位,
(1)android 对于超大文件(比如1G的txt文本文件)的读写是否支持?
(2)读取的方式是先写如buffer中,那么andorid是否也跟windows 一样有虚拟内存什么的?否则800M的内存,无法读取1G的文件吧?
(3)如果支持超大文件,应该用什么方式读取呢?谢谢了
D/AndroidRuntime( 364): Shutting down VM
W/dalvikvm( 364): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime( 364): FATAL EXCEPTION: main
E/AndroidRuntime( 364): java.lang.OutOfMemoryError测试环境:
android版本:2.3
内存:800M
CPU:800Mhz测试代码:
FileInputStream file_read = new FileInputStream(file);
StringBuffer sb = new StringBuffer();
int i;
char c;
while((i = file_read.read()) != -1)
{
c = (char)i;
sb.append(c);
}
请问下各位,
(1)android 对于超大文件(比如1G的txt文本文件)的读写是否支持?
(2)读取的方式是先写如buffer中,那么andorid是否也跟windows 一样有虚拟内存什么的?否则800M的内存,无法读取1G的文件吧?
(3)如果支持超大文件,应该用什么方式读取呢?谢谢了
是的,确实是dalvikvm-heap报错,那么应该怎么读写呢?有没有什么资料可以参考下的?
分段的话,因为read只有返回-1表示读取结束,没有其他的返回状态那么是不是可以根据Buffer中读取数据的大小进行判断? 又如何让分段时读取的数据都是下一次的分段内容?