由于最近在写 地图编辑器 发现频繁的需要对文件进行操作 所以将File类进行一些封装 后话:争起在年前完成以及出一个游戏demo
类 :
package utils.air
{
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import mx.controls.Alert;
public class FileUtil
{
public function FileUtil()
{
}
/*
* url 既可以是nativePath 也可以是 url
*/
public static function createDirectory (url:String):File{
var file:File=File.desktopDirectory;
if(url.charAt(0)=="f"){
file.url=url;
}
else {
file.nativePath=url
}
if(!file.exists){
///创建文件夹
file.createDirectory();
}
return file;
}
public static function createResoveDirector(rootFile:File,resovePath:String):File{
var file:File=File.desktopDirectory;
var url:String=rootFile.url;
url=url+"/"+resovePath;
file= FileUtil.createDirectory(url);
return file;
}
/*
设置 File 的路径,如果有指定的File路径则直接返回 该路径, 如果设置的File.url 路径不存在 则创建该路径并返回路径 返回的是url路径
*/
public static function setDirectoryURL(url:String):String{
var file:File=FileUtil.createDirectory(url);
return file.url;
}
public static function createFile(file:File,resovePath:String,content:String=""):File{
// libsFile.directory=file;
////创建文件
var myF:File=file.resolvePath(resovePath);
var fileStream:FileStream=new FileStream();
fileStream.open(myF,FileMode.WRITE);
fileStream.writeMultiByte(content,"gb2312");
fileStream.close();
return myF;
}
public static function createXMLFile(file:File,resovePath:String,content:String=""):File{
// libsFile.directory=file;
////创建文件
var myContent:String='<?xml version="1.0" encoding="utf-8"?>/n';
myContent+=content;
return FileUtil.createFile(file,resovePath,myContent);
}
/*
* 复制 文件 或者目录 复制的过程中 假如有相同的文件存在,则会将原来的文件覆盖掉 返回复制后的文件对象
@param originalFile 是要复制的文件源对象
@param url 指的是文件File的 的url路径 形式类似于 file:///C:/ 并且是绝对路径 url网络形式路径, 是复制后 的副本对象
*/
public static function copyFileToAsync(originalFile:File,url:String):void{
var newFile:File=File.desktopDirectory;
newFile.url=url;
originalFile.copyToAsync(newFile,true);
originalFile.addEventListener(Event.COMPLETE,onComplete);
originalFile.addEventListener(IOErrorEvent.IO_ERROR,onError);
//return newFile;
}
private static function onComplete(e:Event):void{
Alert.show("文件复制完成","提示");
}
private static function onError(e:IOErrorEvent):void{
Alert.show("复制文件发生错误","错误");
}
}
}