Adobe Air FileStream将jpg从一个目录复制到另一个目录

时间:2016-08-06 16:39:37

标签: actionscript-3 air adobe jpeg filestream

我正在尝试编写一个可以将jpg文件从一个目录复制到另一个目录的代码。我想到的是将选定的jpg加载到字节中,然后通过writebytes将其写入指定的文件夹。这是一个桌面AIR应用程序。

byteArray=dataProvider.getByteArray();
Bitmap b = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
galerie_foto_retrieve.setImageBitmap(b);

每次我写文件时,指定目录中都会出现损坏的jpg文件。我错过了什么?如果您知道更好的方法,请告诉我!

2 个答案:

答案 0 :(得分:0)

您可以按照显示的方式执行此操作,但使用文件类copyTo方法复制文件有一种更简单的方法。以下是您的上下文示例:

private function onFileSelected(event:Event):void {
    var sourceFile:File = event.target as File;
    var targetFile:File = File.desktopDirectory.resolvePath(saveDir);

    sourceFile.copyTo(targetFile, true); //true is for overwrite if already exists
}

使用copy也可以使你不必先将文件的内容/字节加载到内存中,这样会更快。

如果您不需要等待副本完成(或者文件很大),则应使用copyToAsync,以便在复制操作完成时不会锁定您的程序。

答案 1 :(得分:-1)

我有时可能是个白痴......

    private function update_treebg(event:MouseEvent):void {
        saveDir = 'structure/' + id + '/bg.jpg';
        file.addEventListener(Event.SELECT, onFileSelected);
        file.browseForOpen("Select an image", [imgFilter]); 
    }

    private function onFileSelected(event:Event):void {
        file.removeEventListener(Event.SELECT, onFileSelected);
        fs.open(event.target as File, FileMode.READ);
        fs.readBytes(bytes);
        var targetFile:File = File.desktopDirectory.resolvePath(saveDir);
        fs.open(targetFile, FileMode.WRITE);
        fs.writeBytes(bytes, 0, bytes.length);
        fs.close();
    }

我修好了。