2017-06-05 40 views
1

我知道這種類型的問題已經被很多用戶詢問過,但這並沒有解決我的問題。如何在Action Script 3中解決FileStream「Error#3013:File or directory is in use」?

我使用一個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()

如果有人能找到我在做錯的地方或者如何解決這個問題,請幫我解決。

+0

不清楚你是否在相同的** fs **實例或新的實例上嘗試它。此外,提供「無法解決您的問題」的鏈接將是一個優點。 – Organis

+0

嗨@Organis,是的,我正在嘗試使用相同的FileStream「fs」編寫另一個文件。 – Ashish

+0

請嘗試以下操作。處理已使用的** fs **並創建一個新的。有時候在AS3中重複使用是一個糟糕的主意。 – Organis

回答

1

您正試圖一個接一個地保存文件,對不對?如果是這樣,則會出現此錯誤,因爲在您嘗試寫入下一個文件之前文件沒有足夠快地關閉。您應該使用openAsync()而不是open()並監聽Filestream上的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 
} 
相關問題