我需要创建一个新文件夹并在其中保存一些数据。代码如下:
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存档中提取文件,我将其存储在数组列表中。
答案 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文件管理器中找到该文件。所以我不确定问题是什么,但我认为它可能不是因为它处于调试模式而不是写它。一旦它被释放,我就能提供确认。