Home > JSFL > JSFL :: FLfile.copyを拡張してディレクトリごとコピーする

JSFL :: FLfile.copyを拡張してディレクトリごとコピーする

  • Posted by: kaede
  • 2009年9月 8日 22:46
  • JSFL

意外かもしれませんが、JSFLはファイルシステムにアクセスすることができ、ファイルやディレクトリの読み書きが可能です。今回のエントリーでは、ディレクトリーのコピーについて記しています。

JSFLでファイルをコピーする場合は、FLfile.copyが便利です。このメソッドは、コピー元とコピー先のファイルシステムのURIを指定して使用します。ところが、このメソッド、実はディレクトリごとのコピーを行うことが出来ません。そこで、このメソッドを拡張してみましょう。ポイントは以下の4個です。

  • フォルダ内の一覧の取得する
  • ディレクトリ・ファイルの判定
  • ディレクトリの作成
  • 再帰
function copyDirectory(dirURI,saveURI){
	dirURI = appendSlash(dirURI);
	saveURI = appendSlash(saveURI);
	var lists =  FLfile.listFolder(dirURI);
	for(var index in lists){
		var targetURI = dirURI+lists[index];
		var copyURI = saveURI+lists[index];
		//ディレクトリか否か判定
		if(FLfile.getAttributes(targetURI).indexOf("D") >= 0){
			FLfile.createFolder(copyURI);
			copyDirectory(targetURI,copyURI)
		}else{
			FLfile.copy(targetURI,copyURI)
		}
	}
}
function appendSlash(str){
	return (str[str.length-1] == "/") ? str : str +"/";
}

フォルダ内のファイルの一覧を取得する

フォルダ内のファイルの一覧を取得するには、 FLfile.listFolderを使用します。ファイル名が配列で返ってきます。

ディレクトリ・ファイルの判定

今回の肝となるところですが、簡単にすませたいのであれば、ファイル名 に"." が含まれているかどうかでどうか判定することも出来ますが、拡張子のついていないファイルに対応することが出来ません。そこで、FLfile.getAttributesを使って、ファイル・ディレクトリの属性情報を文字列で取得します。このメソッドを使用することで、以下の項目を調べることが出来ます。この情報を精査することで、ディレクトリかどうかを判断することが可能です。

  • R -- 読み取り専用
  • D --フォルダ(ディレクトリ)
  • H -- 非表示(Windows のみ)
  • S -- システムファイルまたはシステムフォルダ(Windows のみ)
  • A -- アーカイブ可能(Windows のみ)

ディレクトリの作成

ディレクトリをコピーすることは出来ませんが、作成することはできます。それには、FLfile.createFolderを使用します。

再帰

精査したオブジェクトがディレクトリだった場合にはディレクトリを作成しますが、中身は作成もコピーもされません。そこで、今度はそのURIを引数に設定して関数を再帰させます。こうすることで、ディレクトリが末端にいくまでコピーさせることができます。

Summer Camp 2010 野中文雄のActionScript 3.0による 三次元表現

無料  ActionScript 3.0による 三次元表現 in アップルストア 銀座

フィジカルコンピューティング ラボラトリー

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Trackbacks:0

TrackBack URL for this entry
http://xingxx.com/mt/mt-tb.cgi/88
Listed below are links to weblogs that reference
JSFL :: FLfile.copyを拡張してディレクトリごとコピーする from xingxx

Home > JSFL > JSFL :: FLfile.copyを拡張してディレクトリごとコピーする

Search
Feeds
Tag Cloud

Return to page top