playbook:创建一个新文件夹并保存一些数据

时间:2011-07-28 08:25:27

标签: blackberry air blackberry-playbook

我需要创建一个新文件夹并在其中保存一些数据。代码如下:

        var list:Array=reader.getEntries();
        for(var i:uint=0;i < list.length;i++)
        {
            var bytes:ByteArray=reader.unzip(list[i]);

            var fileStream:FileStream=new FileStream();
            fileStream.open(dir.resolvePath( list[i].getFilename() ),FileMode.WRITE);
            fileStream.writeBytes(bytes,0,bytes.length);    
        }
        fileStream.close();

以下代码用于创建目录dir:

dir=File.applicationStorageDirectory.resolvePath(dirname);
            dir.createDirectory();

但每当我运行此代码时,我都会得到这个

  

错误#3001:文件或目录访问被拒绝。

我已经在blackberry_tablet.xml中给出了reqd权限,即access_shared。

P.S。我正在使用coltware_airxzip.swf从zip存档中提取文件,我将其存储在数组列表中。

1 个答案:

答案 0 :(得分:0)

我知道你说你检查了权限但我会再次检查它们。此外,请检查文件目录和文件名值,并确保它不包含非法文件名字符。例如,像这样的文件名,&#34;)%@ *)!〜-.. txt&#34;可能会导致错误。

此外,检查用户是否未禁用应用程序权限(不应该是开发中的问题)。

为了消除zip库的可能性,看看你是否可以创建简单的文件条目:

for(var i:int;i < 5;i++)
    {
        var fileStream:FileStream = new FileStream();
        var file:File = File.applicationStorageDirectory.resolvePath( "test_"+i+".txt" );
        // if in directory attempt to create it first - something like this for the directory
        // file = !file.exists ? file.createDirectory() : file;
        fileStream.open(file, FileMode.WRITE);
        fileStream.writeUTFBytes("test data");
        fileStream.close();
        // if space available is not 0 then that is good indication file was created or saved
        // of course so is file.exists 
        trace("file exists = " +file.exists);
        trace("Space available = " +file.spaceAvailable);
    }

注意:我现在有同样的问题,除了没有错误消息。它表示文件和目录已创建并显示本机路径:

/accounts/1000/appdata/MyApplication.debug.testDev_Maker_debug533b7b57/data/MyApplication/file_1.txt

和应用存储路径为:

app-storage:/MyApplication/file_1.txt

但是,我无法在AIR浏览器或RIM文件管理器中找到该文件。所以我不确定问题是什么,但我认为它可能不是因为它处于调试模式而不是写它。一旦它被释放,我就能提供确认。