apache-flex 如何解决FileStream“错误#3013:文件或目录正在使用”在Action Script 3中“

dohp0rv5  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(154)

我知道这类问题已经被许多用户问过了,但这并没有解决我的问题。
我正在使用FileStream在文件中写入一些内容,下面是我用来做这件事的代码:

var fs:FileStream = new FileStream ();
fs.open( f , FileMode.WRITE ); // f is contains the file path
fs.writeBytes ( fzf.content ); // fzf is a FZipFile which contains some content
fs.close ();

但问题是,最初,如果我写一个文件,然后这是完美的工作,但没有关闭应用程序,如果我试图写另一个文件,然后这是显示错误“文件或目录正在使用”在fs.open行,所以我不知道我做错了什么,因为我在写写方法后调用close()
如果有人能找到我做错了什么或者如何解决这个问题请帮助我解决。

hxzsmxv2

hxzsmxv21#

您试图一个接一个地保存文件,对吗?如果是这样,这个错误会出现,因为在您尝试写入下一个文件之前,文件关闭得不够快。您应该使用openAsync()而不是open(),并侦听文件流上的Event.CLOSE事件(它只在异步模式下触发)。当它被触发时,您可以写入下一个文件:

var fs:FileStream = new FileStream ();
fs.addEventListener(Event.CLOSE, onFileClosed);

fs.openAsync( f , FileMode.WRITE ); // f is contains the file path
fs.writeBytes ( fzf.content ); // fzf is a FZipFile which contains some content
fs.close ();

private function onFileClosed(e:Event):void
{
    // The file was closed succesfully, it is now safe to write the next one
}

相关问题