我想在 Sdcard 上保存很多文件。当我将这些文件保存在文件夹上时,我会收到内存不足的警告
设备内存太低 - 请关闭以下项目
并且应用程序崩溃了。 我可以手动放置文件夹的问题,我没有得到内存的问题,但在应用程序中它显示它甚至在Sdcard上有可用空间。 这是我用来保存文件的方法。
public static void saveWebContentCache(String save_name, String url) {
FileConnection fconn = null;
OutputStream outputStream = null;
try {
fconn = (FileConnection) Connector.open(
NetWorkConfig.webfolder + save_name,
Connector.READ_WRITE);
if (!fconn.exists()) {
fconn.create();
outputStream = fconn.openOutputStream();
outputStream.write(getByte(url));
}
} catch (IOException e) {
Status.show("ko !");
} finally {// Close the connections
try {
if (outputStream != null) {
outputStream.close();
outputStream = null;
}
} catch (Exception e) {
}
try {
if (fconn != null) {
fconn.close();
fconn = null;
}
} catch (Exception e) {
}
}
}
答案 0 :(得分:3)
至于我,这条线看起来很可疑:
outputStream.write(getByte(url));
这是因为这样的实现意味着你必须在将整个字节数组写入文件的OutputStream
之前在RAM中创建/保持。
相反,您可以将来自http连接的InputSteam
的小块组合读取,并将块写入文件的OutputStream
。像这样:
void copyData(InputStream source, OutputStream destination) throws IOException {
byte[] buf = new byte[1024];
int len;
while ((len = source.read(buf)) > 0) {
destination.write(buf, 0, len);
}
destination.flush();
}