访问SD卡时,Blackberry“找不到文件”(Cordova 2.3.0 +插件)

时间:2013-03-03 14:12:23

标签: blackberry file-io java-me cordova blackberry-simulator

我使用PhoneGap / Cordova编写了一个应用程序,将内容下载到本地文件系统供以后查看,它使用Cordova库进行文件系统访问和传输文件。

部分数据以zip存档的形式出现,因此我需要解压缩内容。

在Cordova中没有用于提取ZIP文件的标准插件,但是我使用了现有的iOS插件,保留了相同的界面,并在Java平台上重新实现了Zip平台的BB平台。

我的问题是,然后我尝试访问我的文件解压缩它,我得到一个“找不到文件”异常。

这是代码:

public void extract(String sourceFile, String targetDirectory) throws IOException {

    byte[] buff = new byte[1024];

    InputStream inStream = null;
    OutputStream outStream = null;

    try {
        FileConnection fcIn = (FileConnection) Connector.open(sourceFile, Connector.READ_WRITE);
        FileConnection fcOut;

        inStream = fcIn.openInputStream();
        ZipInputStream zipIS = new ZipInputStream(inStream);
        ZipEntry zipEntry = zipIS.getNextEntry();

        while (zipEntry != null) {
            String fileName = zipEntry.getName();
            fcOut = (FileConnection) Connector.open(targetDirectory + fileName, Connector.READ_WRITE);
            outStream = fcOut.openOutputStream();

            int readLength;
            while ((readLength = inStream.read(buff)) > 0) {
                outStream.write(buff, 0, readLength);
            }
            outStream.flush();
            outStream.close();

            zipEntry = zipIS.getNextEntry();
        }

    } catch (RuntimeException e) {
        Logger.error(TAG + "Unzip failed: " + e.getMessage());
        throw new ZipException("Unable to unzip file: " + e.getMessage());

    } finally {
        // Cleanup code
        if (inStream != null) {
            inStream.close();
        }
        if (outStream != null) {
            outStream.close();
        }
    }
}

调试确认我传递了以下参数:

源文件:file:///SDCard/downloadable/B3/B3.zip Dest Dir:file:/// SDCard / downloadable / B3 /

检查测试设备上的SD卡,并在模拟器上查看合成SD卡,确认以下文件结构:

root
  - BlackBerry
      - Etc
  - temp
  - downloadable
      - B1
      - B2
          - B2.zip
      - B3
          - B3.zip
      - B4
      - B5
      - B6

我在BB 7.0和7.1上运行测试,Cordova是V2.3.0,测试设备是9800,9810,以及运行BB 7.0或7.1 OS的9800和9810模拟器。

0 个答案:

没有答案