2013-03-02 3 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); 
} 

The копирование работает, но имя целевого файла сохраняет имя исходного файла. Если я попытаюсь скопировать имя файла «Kalimba.mp3», копия будет называться «Kalimba.snd», а не «test.snd», как и ожидалось. Проблема в том, что после копирования моя ссылка на целевой файл ничего не приводит, так как его nativePath придерживается «test.snd», которого не существует.

Я использую AIR 3.6 с Flex 4.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

Смежные вопросы