在黑莓上保存文件时内存不足警告

时间:2013-02-18 09:48:16

标签: memory blackberry java-me

我想在 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) {
        }
    }
}

1 个答案:

答案 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();
}