0

我想在Sdcard上保存许多文件。当我将这些文件保存在文件夹中时,我收到内存不足的警告

设备内存太低 - 请关闭以下项目

并且应用程序崩溃了。我可以手动放置文件夹并且我没有遇到内存问题但在应用程序中它显示它即使SD卡上有可用空间的问题。这是我用来保存文件的方法。

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) {
        }
    }
}
4

1 回答 1

3

至于我,这条线看起来很可疑:

outputStream.write(getByte(url));

这是因为这样的实现意味着您必须在 RAM 中创建/保存整个字节数组,然后再将其写入文件的OutputStream.

相反,您可以结合从 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();
}
于 2013-02-20T15:36:01.227 回答