2013-03-02 89 views
2

我嘗試下面的代碼到選定的文件複製到存儲目錄:File.copyTo保留舊文件名

private function onAddFileClick():void 
{ 
    m__file = new File(); 
    m__file.addEventListener(Event.SELECT, onFileSelect); 
    m__file.browseForOpen("Select a sound", [c__filter]); 
} 

private function onFileSelect(e:Event):void 
{ 
    var l__target:File = File.applicationStorageDirectory.resolvePath("test.snd"); 
    m__file.copyTo(l__target, true); 
} 

複製的作品,但在目標文件名保持原始文件的名稱。如果我嘗試複製文件名「Kalimba.mp3」,則副本將按預期命名爲「Kalimba.snd」而不是「test.snd」。問題是複製後,我對目標文件的引用不會導致任何問題,因爲它的nativePath粘在「test.snd」上,而該文件不存在。

我在Flex 4.6中使用AIR 3.6。

回答

1

重命名與File.moveTo()完成。首先複製 ,然後使用moveTo()重命名它。除非只是移動它會爲你做!顯然,)

等你以後複製:

var sourceFile:File = File.applicationStorageDirectory; 
sourceFile = sourceFile.resolvePath("Kalimba.snd"); 
var destination:File = File.applicationStorageDirectory; 
destination = destination.resolvePath("test.snd"); 

try 
{ 
    sourceFile.moveTo(destination, true); 
} 
catch (error:Error) 
{ 
    trace("Error:" + error.message); 
} 
+0

所以CopyTo從只能夠重新命名延伸......這是可悲的,你說得對。我會補充說,sourceFile保留對未出現的預移動文件的引用。 – Kodiak 2013-03-03 15:27:27