HAKUHIN's home page
更新履歴
 
 



Fileクラスについて
 


■Fileクラスについて

Fileクラスを使用すると、ファイルの名称や作成日、属性といった情報を取得できます。またファイルの移動やコピー、削除を行う事ができます。
 
ファイルのデータを読み込んだり、書き込んだりしたい場合はFileStreamクラスを使用します。
 
■File オブジェクトを作成する

引数にファイルパスを設定してインスタンス化するとそのファイルを操作する事ができるようになります。このパスは URL 形式か Windows や Macintosh でのパス名称を指定します。
 
File オブジェクトを作成する

import flash.filesystem.File;

var file : File = new File("C:\\test.txt");
var file : File = new File("file:///C:/test.txt");
 
指定したパスにファイルやディレクトリが存在しない場合でも、File オブジェクトを作成する事ができます。新規にファイルやディレクトリを作成する時に必要になります。
 
 



ファイル入出力支援用のダイアログを表示する
 
サンプルをダウンロード
 


■1つのファイルを開くためのダイアログを表示する

以下の画像ような「ファイルを開くためのダイアログ」を表示します。
 
Windows XP のダイアログ
 
Ubuntu 9.10 のダイアログ
 
 
1つのファイルを開くダイアログを表示するには、browseForOpen() メソッドを使用します。
 
File.browseForOpen ( "ダイアログのタイトル" , [FileFilter] );
第01引数 ダイアログに表示したい文字を指定
第02引数(略可)選択するファイルの拡張子に制限をつける FileFilter 型で配列に格納して指定
戻り値 なし
 
選択するファイルにフィルタをかけて開くダイアログを表示する

import flash.filesystem.File;
import flash.net.FileFilter;

// 選択するファイルの種類をフィルタリング
var txtFilter0:FileFilter = new FileFilter("テキスト関連のファイル", "*.txt;*.doc;*.html");
var txtFilter1:FileFilter = new FileFilter("Flash関連のファイル", "*.fla;*.swf;");

// 1つのファイルを開くためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForOpen("ファイルを開く",[txtFilter0,txtFilter1]);
 
 
このメソッドは、ダイアログ動作中でもプログラムが動き続けるので、必ずイベントをつけて結果を得る必要があります。
 
SELECT イベントと CANCEL イベントに対応しています。引数から渡される Event.target から File オブジェクトを受け取る事ができます。
 
開くダイアログを表示して結果を得る

import flash.filesystem.File;

// 1つのファイルを開くためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForOpen("ファイルを開く");

// 選択された時に呼び出されるイベント
file.addEventListener(Event.SELECT,FileBrowseForOpenSelectFunc);
function FileBrowseForOpenSelectFunc(e:Event):void {
	// 選択したファイル
	var select : File = e.target as File;
	trace("開く : " + select.nativePath);
};

// キャンセルされた時に呼び出されるイベント
file.addEventListener(Event.CANCEL,FileBrowseForOpenCancelFunc);
function FileBrowseForOpenCancelFunc(e:Event):void {
	trace("閉じるボタンが押された");
};
 



■複数のファイルを開くためのダイアログを表示する

以下の画像ような「複数のファイルを開くためのダイアログ」を表示します。
 
Windows XP のダイアログ
 
Ubuntu 9.10 のダイアログ
 
 
複数のファイルを開くダイアログを表示するには、browseForOpenMultiple() メソッドを使用します。
 
File.browseForOpenMultiple ( "ダイアログのタイトル" , [FileFilter] );
第01引数 ダイアログに表示したい文字を指定
第02引数(略可)選択するファイルの拡張子に制限をつける FileFilter 型で配列に格納して指定
戻り値 なし
 
選択するファイルにフィルタをかけて開くダイアログを表示する

import flash.filesystem.File;
import flash.net.FileFilter;

// 選択するファイルの種類をフィルタリング
var txtFilter0:FileFilter = new FileFilter("テキスト関連のファイル", "*.txt;*.doc;*.html");
var txtFilter1:FileFilter = new FileFilter("Flash関連のファイル", "*.fla;*.swf;");

// 複数のファイルを開くためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForOpenMultiple("ファイルを開く",[txtFilter0,txtFilter1]);
 
このメソッドは、ダイアログ動作中でもプログラムが動き続けるので、必ずイベントをつけて結果を得る必要があります。
 
SELECT_MULTIPLE イベントと CANCEL イベントに対応しています。引数から渡される Event.target から File オブジェクトが格納された配列を受け取る事ができます。
 
複数開くダイアログを表示して結果を得る

import flash.filesystem.File;
import flash.events.FileListEvent;

// 複数のファイルを開くためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForOpenMultiple("ファイルを開く");

// 選択された時に呼び出されるイベント
file.addEventListener(FileListEvent.SELECT_MULTIPLE,FileBrowseForOpenSelectMultipleFunc);
function FileBrowseForOpenSelectMultipleFunc(e:FileListEvent):void {

	// 選択した複数ファイル
	var files : Array = e.files;
	var i : int;
	for(i=0;i < files.length;i++){
		var select : File = files[i];
		trace("開く : " + select.nativePath);
	}
};

// キャンセルされた時に呼び出されるイベント
file.addEventListener(Event.CANCEL,FileBrowseForOpenCancelFunc);
function FileBrowseForOpenCancelFunc(e:Event):void {
	trace("閉じるボタンが押された");
};
 



■ファイルを保存するためのダイアログを表示する

以下の画像ような「ファイルを保存するためのダイアログ」を表示します。
 
Windows XP のダイアログ
 
Ubuntu 9.10 のダイアログ
 
 
ファイルを保存するためのダイアログを表示するには、browseForSave() メソッドを使用します。
 
File.browseForSave ( "ダイアログのタイトル" );
第01引数 ダイアログに表示したい文字を指定
戻り値 なし
 
保存するダイアログを表示する

import flash.filesystem.File;

// ファイルを保存するためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForSave ("ファイルを保存する");
 
このメソッドは、ダイアログ動作中でもプログラムが動き続けるので、必ずイベントをつけて結果を得る必要があります。
 
SELECT_MULTIPLE イベントと CANCEL イベントに対応しています。引数から渡される Event.target から File オブジェクトを受け取る事ができます。
 
保存するダイアログを表示して結果を得る

import flash.filesystem.File;

// ファイルを保存するためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForSave("ファイルを保存");

// 選択された時に呼び出されるイベント
file.addEventListener(Event.SELECT,FileBrowseForSaveSelectFunc);
function FileBrowseForSaveSelectFunc(e:Event):void {
	// 選択したファイル
	var select : File = e.target as File;
	trace("保存 : " + select.nativePath);
	
	// ファイルに書き込む
	/*
	var stream:FileStream = new FileStream();
	stream.open(select, FileMode.WRITE);
	stream.writeUTFBytes("保存テスト");
	stream.close();
	*/
};

// キャンセルされた時に呼び出されるイベント
file.addEventListener(Event.CANCEL,FileBrowseForSaveCancelFunc);
function FileBrowseForSaveCancelFunc(e:Event):void {
	trace("閉じるボタンが押された");
};
 



■フォルダを選択するダイアログを表示する

以下の画像ような「フォルダを開くためのダイアログ」を表示します。
 
Windows XP のダイアログ
 
Ubuntu 9.10 のダイアログ
 
 
フォルダを選択するダイアログを表示するには、browseForDirectory() メソッドを使用します。
 
File.browseForDirectory ( "ダイアログのタイトル" );
第01引数 ダイアログに表示したい文字を指定
戻り値 なし
 
フォルダを選択するダイアログを表示する

import flash.filesystem.File;

// フォルダを選択するためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForDirectory("ディレクトリを選択");
 
このメソッドは、ダイアログ動作中でもプログラムが動き続けるので、必ずイベントをつけて結果を得る必要があります。
 
SELECT イベントと CANCEL イベントに対応しています。引数から渡される Event.target から File オブジェクトを受け取る事ができます。
 
フォルダを選択するダイアログを表示して結果を得る

import flash.filesystem.File;

// フォルダを選択するためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForDirectory("ディレクトリを選択");

// 選択された時に呼び出されるイベント
file.addEventListener(Event.SELECT,FileBrowseForDirectorySelectFunc);
function FileBrowseForDirectorySelectFunc(e:Event):void {
	// 選択したファイル
	var select : File = e.target as File;
	trace("開く : " + select.nativePath);
};

// キャンセルされた時に呼び出されるイベント
file.addEventListener(Event.CANCEL,FileBrowseForDirectoryCancelFunc);
function FileBrowseForDirectoryCancelFunc(e:Event):void {
	trace("閉じるボタンが押された");
};
 




ファイルやフォルダの情報を取得する
 
サンプルをダウンロード
 


■FileReference クラスのプロパティ

File クラスの派生元である FileReference クラスから以下のファイルの情報を取得する事ができます。
 
プロパティ名説明
nameStringファイル名
extensionString拡張子
sizeNumberサイズ
typeStringファイル形式
creationDateDate作成日
modificationDateDate最終更新日
creatorStringクリエータタイプ(Macintosh)
 
ファイルの情報を取得する

import flash.filesystem.File;

// 1つのファイルを開くためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForOpen("ファイルを開く");

// 選択された時に呼び出されるイベント
file.addEventListener(Event.SELECT,FileBrowseForOpenSelectFunc);
function FileBrowseForOpenSelectFunc(e:Event):void {
	// 選択したファイル
	var select : File = e.target as File;
	
	trace("ファイル名 : " + select.name);				// ファイル名
	trace("拡張子 : " + select.extension);			// 拡張子
	trace("サイズ : " + select.size);				// サイズ
	trace("ファイル形式 : " + select.type);			// ファイル形式
	trace("作成日 : " + select.creationDate);			// 作成日
	trace("最終更新日 : " + select.modificationDate);		// 最終更新日
	trace("クリエータタイプ(Macintosh用) : " + select.creator);	// クリエータタイプ(Macintosh用)
};
 
■File クラスのプロパティ

File クラスからは、以下のファイルの情報を取得する事ができます。
 
プロパティ名説明
urlStringファイルのURLパス
nativePathString各OSを基準としたディレクトリパス
iconIconファイルのアイコン
isDirectoryBooleanディレクトリならtrue ファイルなら false
isHiddenBoolean隠し(非表示)属性が付いているか
isPackageBooleanアーカイブ属性が付いているか
existsBooleanファイルが存在するか
isSymbolicLinkBooleanショートカット(シンボリックリンク)であるか
 
ファイルの情報を取得する

import flash.filesystem.File;

// 1つのファイルを開くためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForOpen("ファイルを開く");

// 選択された時に呼び出されるイベント
file.addEventListener(Event.SELECT,FileBrowseForOpenSelectFunc);
function FileBrowseForOpenSelectFunc(e:Event):void {
	// 選択したファイル
	var select : File = e.target as File;

	trace("ファイルのURLパス : " + select.url);			// ファイルのURLパス
	trace("各OSでのファイルパス名称 : " + select.nativePath);	// 各OSでのディレクトリパス名称
	trace("アイコン : " + select.icon);				// アイコン
	trace("ディレクトリか : " + select.isDirectory);		// ディレクトリならtrue ファイルなら false
	trace("隠し属性か : " + select.isHidden);			// 隠し(非表示)属性が付いているか
	trace("アーカイブ属性か : " + select.isPackage);		// アーカイブ属性が付いているか
	trace("ファイルが存在するか : " + select.exists);		// ファイルが存在するか
	trace("ショートカットか : " + select.isSymbolicLink);		// ショートカット(シンボリックリンク)であるか
};
 
File クラスから静的に取得できるパラメータです。
 
プロパティ名説明
lineEndingStringOS の行終了文字
separatorStringOS のコンポーネントの区切り文字
systemCharsetStringOS のデフォルトのエンコーディング
 
ファイルの情報を取得する

import flash.filesystem.File;

trace("OS の行終了文字 : " + File.lineEnding);			// OS の行終了文字
trace("OS のコンポーネントの区切り文字 : " + File.separator);		// OS のコンポーネントの区切り文字
trace("OS のデフォルトのエンコーディング : " + File.systemCharset);	// OS のデフォルトのエンコーディング
 




さまざまなディレクトリパスを取得する
 
サンプルをダウンロード
 


■静的に取得できるディレクトリ

静的に取得できるプロパティです。File.* でアクセスできます。
 
プロパティ名説明
applicationDirectoryFile実行ファイルが格納されているディレクトリ(インストールされているディレクトリ)を取得する
applicationStorageDirectoryFile一時作業用のテンポラリディレクトリを取得する
desktopDirectoryFileデスクトップのディレクトリを取得する
documentsDirectoryFileマイドキュメントのディレクトリを取得する
userDirectoryFileユーザーディレクトリを取得する
 
ディレクトリの情報を取得する

import flash.filesystem.File;

trace("実行ディレクトリ : " + File.applicationDirectory.nativePath);		// 実行ファイルが格納されているディレクトリ(インストールされているディレクトリ)を取得する
trace("作業用ディレクトリ : " + File.applicationStorageDirectory.nativePath);	// 一時作業用のテンポラリディレクトリを取得する
trace("デスクトップ : " + File.desktopDirectory.nativePath);			// デスクトップのディレクトリを取得する
trace("マイドキュメント : " + File.documentsDirectory.nativePath);		// マイドキュメントのディレクトリを取得する
trace("ユーザーディレクトリ : " + File.userDirectory.nativePath);		// ユーザーディレクトリを取得する
 
■ルートディレクトリを取得する

File.getRootDirectories() メソッドを使用するとルートディレクトリを File 型のオブジェクトが格納された配列で取得する事ができます。
 
ルートディレクトリを取得する

import flash.filesystem.File;

// ルートディレクトリを取得する
var root_directries : Array = File.getRootDirectories();
var i:int;
for(i=0;i < root_directries.length;i++){
	var root_directroy : File = root_directries[i];
	trace("ルートディレクトリ : " + root_directroy.nativePath);
}
 
■1つ上のディレクトリを調べる

parent プロパティを使用すると現在のディレクトリから1つ上のフォルダを調べる事ができます。
 
ルートディレクトリを取得する

import flash.filesystem.File;

// フォルダを選択するためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForDirectory("ディレクトリを選択");

// 選択された時に呼び出されるイベント
file.addEventListener(Event.SELECT,FileBrowseForDirectorySelectFunc);
function FileBrowseForDirectorySelectFunc(e:Event):void {
	// 選択したファイル
	var select : File = e.target as File;
	trace("1つ上のパス : " + select.parent.nativePath);		

};
 



■ディレクトリ内にあるファイルやフォルダを取得する

getDirectoryListing() メソッドにて、ディレクトリ内にあるファイルやフォルダを列挙する事ができます。
 
このメソッドは、すべて調べ終わるまでプログラムがいったん停止するのでその間は画面が更新されません。よってすぐに終わる場合に最適です。
 
フォルダ内のファイルを列挙する(同期)

import flash.filesystem.File;

// ファイルを保存するためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForDirectory("ディレクトリを選択");

// 選択された時に呼び出されるイベント
file.addEventListener(Event.SELECT,FileBrowseForDirectorySelectFunc);
function FileBrowseForDirectorySelectFunc(e:Event):void {
	// 選択したディレクトリ
	var select : File = e.target as File;

	// フォルダ内のファイルを列挙
	var files : Array = select.getDirectoryListing();
	var i:int;
	for(i=0;i < files.length;i++){
		var file : File = files[i];
		trace(file.nativePath);
	}
};
 
getDirectoryListingAsync() メソッドで非同期処理にて、ディレクトリ内にあるファイルやフォルダを列挙する事ができます。
 
DIRECTORY_LISTING イベントでファイルの調査が終了した事がわかります。 IO_ERROR イベントを使うと入出力に失敗した事がわかります。
 
このメソッドは、ファイルを調べている間にプログラムが停止せずに動作し続けるので、調べている間にユーザーにほかの作業をさせたいときに最適です。
 
サブディレクトリの隅々まで再帰処理で調べたい場合にはこちらのメソッドを使用します。
 
フォルダ内のファイルをすべて列挙する(非同期)

import flash.filesystem.File;

// ファイルを保存するためのダイアログを表示する(非同期)
var file:File = new File();
file.browseForDirectory("ディレクトリを選択");

// 選択された時に呼び出されるイベント
file.addEventListener(Event.SELECT,FileBrowseForDirectorySelectFunc);
function FileBrowseForDirectorySelectFunc(e:Event):void {
	// 選択したファイル
	var directory : File = e.target as File;
	directory.getDirectoryListingAsync();
	directory.addEventListener(FileListEvent.DIRECTORY_LISTING, DirectoryGetListAsyncFunc);
	function DirectoryGetListAsyncFunc(event:FileListEvent):void {
		var files:Array = event.files;

		// ディレクトリ検索
		var i:int;
		for (i=0;i < files.length;i++) {
			var file : File = files[i];

			// ファイルのパスを取得
			trace(file.nativePath);

			// ディレクトリであれば再帰検索
			if(file.isDirectory){
				file.getDirectoryListingAsync();
				file.addEventListener(FileListEvent.DIRECTORY_LISTING, DirectoryGetListAsyncFunc);
				file.addEventListener(IOErrorEvent.IO_ERROR, DirectoryGetListAsyncIOErrorFunc);
			}
		}
	}
	
	// 入出力エラー時に呼ばれる関数
	directory.addEventListener(IOErrorEvent.IO_ERROR, DirectoryGetListAsyncIOErrorFunc );
	function DirectoryGetListAsyncIOErrorFunc(event:IOErrorEvent): void{
	    trace("入出力エラー");
	}
};
 




ファイルやフォルダを作成する
 


■ファイルを作成したい場所を決める

まず、File クラスの引数に作成したいファイルパスを指定して、インスタンス化します。C ドライブ直下にtest.txtテキストファイルを作りたいなら以下のようになります。 新しいファイルパスなので、存在していないファイルパスを指定する事になります。
 
Cドライブ 直下に test.txt を作るとして File オブジェクトを作成する

import flash.filesystem.File;

var file : File = new File("C:\\test.txt");
var file : File = new File("file:///C:/test.txt");
 
■相対パスを使って指定する

なんらかのディレクトリパスを基準として相対的な位置を参照したい場合は、resolvePath() メソッドを使用します。引数に現在の File オブジェクトで指定されているファイルパスからの相対パスを指定すると、新しい File オブジェクトが返ります。
 
デスクトップに test.txt ファイルを作るとしてFile オブジェクトを作成

import flash.filesystem.File;

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var new_file : File = desktop_file.resolvePath("test.txt");
trace(new_file.nativePath);
 
■ファイルを作成する

FileSystem クラスを使用すると、ファイルを作成してデータを書き込む事ができます。フォルダが存在しない場合は自動的にフォルダが作成されます。

デスクトップに test.txt ファイルを作成する例です。
 
デスクトップに test.txt ファイルを作成
(ファイルの操作を行います!!)

import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.filesystem.FileMode;

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var new_file : File = desktop_file.resolvePath("test.txt");

// 文字列を書き込む
var stream : FileStream = new FileStream();
stream.open (new_file, FileMode.WRITE);
stream.writeUTFBytes("保存テスト");
stream.close();
 
■ディレクトリを作成する

ディレクトリを作成するには、createDirectory() メソッドを使用します。

デスクトップに test フォルダを作成する例です。
 
デスクトップに test フォルダを作成
(ファイルの操作を行います!!)

import flash.filesystem.File;

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var new_file : File = desktop_file.resolvePath("test");

// フォルダを作成する
new_file.createDirectory();
 



■一時作業用ファイルを作成する

一時的な作業用ファイルを作成するには、File.createTempFile() メソッドを使用します。戻り値に作成されたファイルパスが格納されたFile オブジェクトが返ります。

このメソッドを使って作成したファイルはAIR から自動的に削除されません。アプリケーション終了時にプログラム側で削除します。
 
一時作業用ファイルを作成する
(ファイルの操作を行います!!)

import flash.filesystem.File;

// 一時ファイルを作成する
var new_file : File = File.createTempFile();
trace(new_file.nativePath);
 
■一時作業用ディレクトリを作成する

一時的な作業用ディレクトリを作成するには、File.createTempDirectory() メソッドを使用します。戻り値に作成されたフォルダパスが格納されたFile オブジェクトが返ります。

このメソッドを使って作成したディレクトリはAIR から自動的に削除されません。アプリケーション終了時にプログラム側で削除します。
 
一時作業用ディレクトリを作成する
(ファイルの操作を行います!!)

import flash.filesystem.File;

// 一時フォルダを作成する
var new_file : File = File.createTempDirectory();
trace(new_file.nativePath);
 




ファイルやフォルダを移動する
 


■ファイルの移動元と移動先のファイルパスを用意する

移動したいファイルパスと移動先のファイルパスの2つを用意します。
 
移動元にファイルを指定した場合はファイルの移動となります。移動先はディレクトリ名で終わるのではなく、移動先のファイル名まで指定します。
 
移動元にディレクトリを指定した場合はディレクトリの移動となります。
 
■移動したいファイルを決める

まず、File クラスの引数に作成したいファイルパスを指定して、インスタンス化します。C ドライブ直下にあるtest.txtテキストファイルを移動したいなら以下のようになります。 移動元は、存在するファイルを指定します。移動先は、存在してなくてもかまいません。
 
Cドライブ 直下にある test.txt から File オブジェクトを作成する

import flash.filesystem.File;

var file : File = new File("C:\\test.txt");
var file : File = new File("file:///C:/test.txt");
 
■相対パスを使って指定する

なんらかのディレクトリパスを基準として相対的な位置を参照したい場合は、resolvePath() メソッドを使用します。引数に現在の File オブジェクトで指定されているファイルパスからの相対パスを指定すると、新しい File オブジェクトが返ります。
 
デスクトップにある test.txt から File オブジェクトを作成

import flash.filesystem.File;

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var new_file : File = desktop_file.resolvePath("test.txt");
trace(new_file.nativePath);
 
■ファイルを移動する(同期動作)

moveTo () メソッドを使用すると、ファイルやフォルダを移動する事ができます。ファイルが開かれている場合や、存在しない場合、入出力エラーとなります。
 
File.moveTo ( ファイルパス , [上書き移動を許可するか]);
第01引数 移動先を FileReference 型で指定
第02引数(略可)上書き移動を許可する場合 true 、上書き移動時にエラーとしたい場合は false
戻り値 なし
 
デスクトップに test.txt ファイルを移動
(ファイルの操作を行います!!)

import flash.filesystem.File;

// 移動元となる一時ファイルを作成する
var source_file : File = File.createTempFile();

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var move_file : File = desktop_file.resolvePath("test.txt");

try {
	// ファイルを移動する
	source_file.moveTo(move_file, true);
	trace("移動が完了しました");

}catch (error:Error){
	trace("入出力エラー");
}

デスクトップに test フォルダを移動
(ファイルの操作を行います!!)

import flash.filesystem.File;

// 一時フォルダを作成する
var source_directory : File = File.createTempDirectory();

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var move_directory : File = desktop_file.resolvePath("test.txt");

try {
	// ファイルを移動する
	source_directory.moveTo(move_directory , true);
	trace("移動が完了しました");

}catch (error:Error){
	trace("入出力エラー");
}
 
■ファイルを移動する(非同期動作)

moveToAsync() メソッドを使用すると、非同期でファイルやフォルダを移動する事ができます。ファイルが開かれている場合や、存在しない場合、入出力エラーとなります。
 
COMPLETE イベントを使うとファイルの移動が終了した事がわかります。
IO_ERROR イベントを使うと入出力に失敗した事がわかります。
 
File.moveToAsync ( ファイルパス , [上書き移動を許可するか]);
第01引数 移動先を FileReference 型で指定
第02引数(略可)上書き移動を許可する場合 true 、上書き移動時にエラーとしたい場合は false
戻り値 なし
 
デスクトップに test.txt ファイルを移動(非同期)
(ファイルの操作を行います!!)

import flash.filesystem.File;
import flash.events.IOErrorEvent;

// 移動元となる一時ファイルを作成する
var source_file : File = File.createTempFile();

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var move_file : File = desktop_file.resolvePath("test.txt");

// ファイルを移動する
source_file.moveToAsync(move_file, true);

// 移動終了時に呼ばれる関数
source_file.addEventListener(Event.COMPLETE, FileMoveToAsyncCompleteFunc );
function FileMoveToAsyncCompleteFunc(event:Event): void{
    trace("移動が終了しました");
}

// 入出力エラー時に呼ばれる関数
source_file.addEventListener(IOErrorEvent.IO_ERROR, FileMoveToAsyncIOErrorFunc );
function FileMoveToAsyncIOErrorFunc(event:IOErrorEvent): void{
    trace("入出力エラー");
}

デスクトップに test フォルダを移動(非同期)
(ファイルの操作を行います!!)

import flash.filesystem.File;
import flash.events.IOErrorEvent;

// 一時フォルダを作成する
var source_directory : File = File.createTempDirectory();

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var move_directory : File = desktop_file.resolvePath("test");

// ファイルを移動する
source_directory.moveToAsync(move_directory, true);

// 移動終了時に呼ばれる関数
source_directory.addEventListener(Event.COMPLETE, FileMoveToAsyncCompleteFunc );
function FileMoveToAsyncCompleteFunc(event:Event): void{
    trace("移動が終了しました");
}

// 入出力エラー時に呼ばれる関数
source_directory.addEventListener(IOErrorEvent.IO_ERROR, FileMoveToAsyncIOErrorFunc );
function FileMoveToAsyncIOErrorFunc(event:IOErrorEvent): void{
    trace("入出力エラー");
}
 




ファイルやフォルダをコピーする
 


■ファイルのコピー元とコピー先のファイルパスを用意する

コピーしたいファイルパスとコピー先のファイルパスの2つを用意します。
 
コピー元にファイルを指定した場合はファイルのコピーとなります。コピー先はディレクトリ名で終わるのではなく、コピー先のファイル名まで指定します。
 
コピー元にディレクトリを指定した場合はディレクトリのコピーとなります。
 
■コピーしたいファイルを決める

まず、File クラスの引数に作成したいファイルパスを指定して、インスタンス化します。C ドライブ直下にあるtest.txtテキストファイルをコピーしたいなら以下のようになります。 コピー元は、存在するファイルを指定します。コピー先は、存在してなくてもかまいません。
 
Cドライブ 直下にある test.txt から File オブジェクトを作成する

import flash.filesystem.File;

var file : File = new File("C:\\test.txt");
var file : File = new File("file:///C:/test.txt");
 
■相対パスを使って指定する

なんらかのディレクトリパスを基準として相対的な位置を参照したい場合は、resolvePath() メソッドを使用します。引数に現在の File オブジェクトで指定されているファイルパスからの相対パスを指定すると、新しい File オブジェクトが返ります。
 
デスクトップにある test.txt から File オブジェクトを作成

import flash.filesystem.File;

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var new_file : File = desktop_file.resolvePath("test.txt");
trace(new_file.nativePath);
 
■ファイルをコピーする(同期動作)

copyTo () メソッドを使用すると、ファイルやフォルダをコピーする事ができます。ファイルが開かれている場合や、存在しない場合、入出力エラーとなります。
 
File.copyTo ( ファイルパス , [上書きコピーを許可するか]);
第01引数 コピー先を FileReference 型で指定
第02引数(略可)上書きコピーを許可する場合 true 、上書きコピー時にエラーとしたい場合は false
戻り値 なし
 
デスクトップに test.txt ファイルをコピー
(ファイルの操作を行います!!)

import flash.filesystem.File;

// コピー元となる一時ファイルを作成する
var source_file : File = File.createTempFile();

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var copy_file : File = desktop_file.resolvePath("test.txt");

try {
	// ファイルをコピーする
	source_file.copyTo(copy_file, true);
	trace("コピーが完了した");

}catch (error:Error){
	trace("入出力エラー");
}

デスクトップに test フォルダをコピー
(ファイルの操作を行います!!)

import flash.filesystem.File;

// 一時フォルダを作成する
var source_directory : File = File.createTempDirectory();

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var copy_directory : File = desktop_file.resolvePath("test.txt");

try {
	// ファイルをコピーする
	source_directory.copyTo(copy_directory , true);
	trace("コピーが完了した");

}catch (error:Error){
	trace("入出力エラー");

}
 
■ファイルをコピーする(非同期動作)

copyToAsync() メソッドを使用すると、非同期でファイルやフォルダをコピーする事ができます。ファイルが開かれている場合や、存在しない場合、入出力エラーとなります。
 
COMPLETE イベントを使うとファイルのコピーが終了した事がわかります。
IO_ERROR イベントを使うと入出力に失敗した事がわかります。
 
File.copyToAsync ( ファイルパス , [上書きコピーを許可するか]);
第01引数 コピー先を FileReference 型で指定
第02引数(略可)上書きコピーを許可する場合 true 、上書きコピー時にエラーとしたい場合は false
戻り値 なし
 
デスクトップに test.txt ファイルをコピー(非同期)
(ファイルの操作を行います!!)

import flash.filesystem.File;
import flash.events.IOErrorEvent;

// コピー元となる一時ファイルを作成する
var source_file : File = File.createTempFile();

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var copy_file : File = desktop_file.resolvePath("test.txt");

// ファイルをコピーする
source_file.copyToAsync(copy_file, true);

// コピー終了時に呼ばれる関数
source_file.addEventListener(Event.COMPLETE, FileCopyToAsyncCompleteFunc );
function FileCopyToAsyncCompleteFunc(event:Event): void{
    trace("コピーが終了しました");
}

// 入出力エラー時に呼ばれる関数
source_file.addEventListener(IOErrorEvent.IO_ERROR, FileCopyToAsyncIOErrorFunc );
function FileCopyToAsyncIOErrorFunc(event:IOErrorEvent): void{
    trace("入出力エラー");
}

デスクトップに test フォルダをコピー(非同期)
(ファイルの操作を行います!!)

import flash.filesystem.File;
import flash.events.IOErrorEvent;

// 一時フォルダを作成する
var source_directory : File = File.createTempDirectory();

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var copy_directory : File = desktop_file.resolvePath("test");

// ファイルをコピーする
source_directory.copyToAsync(copy_directory, true);

// コピー終了時に呼ばれる関数
source_directory.addEventListener(Event.COMPLETE, FileCopyToAsyncCompleteFunc );
function FileCopyToAsyncCompleteFunc(event:Event): void{
    trace("コピーが終了しました");
}

// 入出力エラー時に呼ばれる関数
source_directory.addEventListener(IOErrorEvent.IO_ERROR, FileCopyToAsyncIOErrorFunc );
function FileCopyToAsyncIOErrorFunc(event:IOErrorEvent): void{
    trace("入出力エラー");
}
 




ファイルやフォルダを削除する
 


■削除したいファイルを決める

まず、File クラスの引数に作成したいファイルパスを指定して、インスタンス化します。C ドライブ直下にあるtest.txt テキストファイルを削除したいなら以下のようになります。
 
Cドライブ 直下にある test.txt から File オブジェクトを作成する

import flash.filesystem.File;

var file : File = new File("C:\\test.txt");
var file : File = new File("file:///C:/test.txt");
 
■相対パスを使って指定する

なんらかのディレクトリパスを基準として相対的な位置を参照したい場合は、resolvePath() メソッドを使用します。引数に現在の File オブジェクトで指定されているファイルパスからの相対パスを指定すると、新しい File オブジェクトが返ります。
 
デスクトップにある test.txt から File オブジェクトを作成

import flash.filesystem.File;

// デスクトップのファイルパスを取得する
var desktop_file : File = File.desktopDirectory;

// デスクトップから相対パスを指定して新しいファイルパスを取得する
var new_file : File = desktop_file.resolvePath("test.txt");
trace(new_file.nativePath);
 



■ファイルを削除する(同期動作)

deleteFile () メソッドを使用すると、ファイルを削除する事ができます。ファイルが開かれている場合や、存在しない場合、入出力エラーとなります。
 
一時ファイルを削除する
(ファイルの操作を行います!!)

import flash.filesystem.File;

// 一時ファイルを作成する
var source_file : File = File.createTempFile();

try {
	// ファイルを削除する
	source_file.deleteFile();
	trace("削除が完了した");

}catch (error:Error){
	trace("入出力エラー");
}
 
■ファイルを削除する(非同期動作)

deleteFileAsync () メソッドを使用すると、非同期でファイルを削除する事ができます。ファイルが開かれている場合や、存在しない場合、入出力エラーとなります。
 
COMPLETE イベントを使うとファイルのコピーが終了した事がわかります。
IO_ERROR イベントを使うと入出力に失敗した事がわかります。
 
一時ファイルを削除(非同期)
(ファイルの操作を行います!!)

import flash.filesystem.File;
import flash.events.IOErrorEvent;

// 一時ファイルを作成する
var source_file : File = File.createTempFile();

// ファイルを削除する
source_file.deleteFileAsync();

// 削除終了時に呼ばれる関数
source_file.addEventListener(Event.COMPLETE, FileDeleteAsyncCompleteFunc );
function FileDeleteAsyncCompleteFunc(event:Event): void{
    trace("削除が終了しました");
}

// 入出力エラー時に呼ばれる関数
source_file.addEventListener(IOErrorEvent.IO_ERROR, FileDeleteAsyncIOErrorFunc );
function FileDeleteAsyncIOErrorFunc(event:IOErrorEvent): void{
    trace("入出力エラー");
}
 



■フォルダを削除する(同期動作)

deleteDirectory () メソッドを使用すると、フォルダを削除する事ができます。フォルダが開かれている場合や、存在しない場合、入出力エラーとなります。
 
引数に、true を指定すると中身の有無に関係なく削除を試みます。false を指定すると、中身がある場合エラーとなります。
 
一時フォルダを削除する
(ファイルの操作を行います!!)

import flash.filesystem.File;

// 一時フォルダを作成する
var source_file : File = File.createTempDirectory();

try {
	// フォルダを削除する
	source_file.deleteDirectory(true);
	trace("削除が完了した");

}catch (error:Error){
	trace("入出力エラー");
}
 
■フォルダを削除する(非同期動作)

deleteDirectoryAsync () メソッドを使用すると、非同期でフォルダを削除する事ができます。フォルダが開かれている場合や、存在しない場合、入出力エラーとなります。
 
引数に、true を指定すると中身の有無に関係なく削除を試みます。false を指定すると、中身がある場合エラーとなります。
 
COMPLETE イベントを使うとフォルダのコピーが終了した事がわかります。
IO_ERROR イベントを使うと入出力に失敗した事がわかります。
 
一時フォルダを削除(非同期)
(ファイルの操作を行います!!)

import flash.filesystem.File;
import flash.events.IOErrorEvent;

// 一時フォルダを作成する
var source_file : File = File.createTempDirectory();

// フォルダを削除する
source_file.deleteDirectoryAsync(true);

// 削除終了時に呼ばれる関数
source_file.addEventListener(Event.COMPLETE, FileDeleteDirectoryAsyncCompleteFunc );
function FileDeleteDirectoryAsyncCompleteFunc(event:Event): void{
    trace("削除が終了しました");
}

// 入出力エラー時に呼ばれる関数
source_file.addEventListener(IOErrorEvent.IO_ERROR, FileDeleteDirectoryAsyncIOErrorFunc );
function FileDeleteDirectoryAsyncIOErrorFunc(event:IOErrorEvent): void{
    trace("入出力エラー");
}
 
■ファイルかフォルダか調べる

File オブジェクトの中身がファイルなのかフォルダなのか調べたい場合は、isDirectory プロパティを使用します。

true の場合フォルダ、false の場合ファイルである事がわかります。
 
フォルダであるか調べる
(ファイルの操作を行います!!)

import flash.filesystem.File;
import flash.events.IOErrorEvent;

// 一時ファイルを作成する
var file : File = File.createTempFile();
trace(file.isDirectory);

// 一時フォルダを作成する
var directory : File = File.createTempDirectory();
trace(directory.isDirectory);

 



■ファイルやフォルダをゴミ箱に移動する(同期動作)

moveToTrash () メソッドを使用すると、ファイルやフォルダを削除する事ができます。ファイルが開かれている場合や、存在しない場合、入出力エラーとなります。
 
一時ファイルをゴミ箱に移動する
(ファイルの操作を行います!!)

import flash.filesystem.File;

// 一時ファイルを作成する
var source_file : File = File.createTempFile();

try {
	// ファイルをゴミ箱に移動する
	source_file.moveToTrash();
	trace("ゴミ箱への移動が完了した");

}catch (error:Error){
	trace("入出力エラー");
}
 
■ファイルやフォルダをゴミ箱に移動する(非同期動作)

moveToTrashAsync () メソッドを使用すると、非同期でファイルやフォルダをゴミ箱に移動する事ができます。ファイルが開かれている場合や、存在しない場合、入出力エラーとなります。
 
COMPLETE イベントを使うとゴミ箱への移動が終了した事がわかります。
IO_ERROR イベントを使うと入出力に失敗した事がわかります。
 
一時ファイルをゴミ箱へ移動する(非同期)
(ファイルの操作を行います!!)

import flash.filesystem.File;
import flash.events.IOErrorEvent;

// 一時ファイルを作成する
var source_file : File = File.createTempFile();

// ファイルをゴミ箱へ移動する
source_file.moveToTrashAsync();

// ゴミ箱への移動終了時に呼ばれる関数
source_file.addEventListener(Event.COMPLETE, FileMoveToAsyncCompleteFunc );
function FileMoveToAsyncCompleteFunc(event:Event): void{
    trace("ゴミ箱への移動が終了しました");
}

// 入出力エラー時に呼ばれる関数
source_file.addEventListener(IOErrorEvent.IO_ERROR, FileMoveToAsyncIOErrorFunc );
function FileMoveToAsyncIOErrorFunc(event:IOErrorEvent): void{
    trace("入出力エラー");
}

 




HAKUHIN's home page バナー http://hakuhin.jp/
(c) Hakuhin & 日新礼符 2002-2011 解像度1024×768以上 IE8.0以上推奨
/ 閲覧中: