我正在尝试编写一个可以将jpg文件从一个目录复制到另一个目录的代码。我想到的是将选定的jpg加载到字节中,然后通过writebytes将其写入指定的文件夹。这是一个桌面AIR应用程序。
byteArray=dataProvider.getByteArray();
Bitmap b = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
galerie_foto_retrieve.setImageBitmap(b);
每次我写文件时,指定目录中都会出现损坏的jpg文件。我错过了什么?如果您知道更好的方法,请告诉我!
答案 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();
}
我修好了。