AIR檔案操作 二 使用檔案物件操作檔案和目錄

2021-06-06 12:05:23 字數 4394 閱讀 7353

air檔案操作(二):使用檔案物件操作檔案和目錄

檔案物件是啥?

檔案物件(file物件)是在檔案系統中指向檔案或目錄的指標。由於安全原因,只在air中可用。

檔案物件能做啥?

獲取特定目錄,包括使用者目錄、使用者文件目錄、該應用程式啟動的目錄和程式目錄

拷貝檔案和目錄

移動檔案和目錄

刪除檔案和目錄(或移至**站)

列出某目錄中的檔案和目錄

建立臨時檔案和資料夾

建立目錄

讀取檔案資訊

獲取檔案系統資訊

在air中,我們用filestream讀寫檔案的前提就是用file物件來指向檔案。

那麼檔案物件具體怎麼玩呢?

功能1、指向目錄和檔案

file 物件有兩個屬性都能定義檔案路徑,它們是nativepath和url。nativepath是在特定平台使用的檔案路徑(主要就是windows和 macos上的路徑表示不同),url則是統一的」file:///c:/sample%20directory/test.txt」這樣的表示方法。

我們來看幾個指向目錄的例項,其中1-7演示了如何獲取特殊目錄:

var file:file = file.userdirectory;

file = file.resolvepath(」mousebomb」);

//跳轉到使用者目錄下的mousebomb目錄

var urlstr:string = "file:///c:/mousebomb/";

var file:file = new file()

file.url = urlstr;

//指向c盤下的mousebomb目錄,這裡使用了url屬性

/*讓使用者選擇目錄*/

var file:file = new file();

file.addeventlistener(event.select, dirselected);

file.browsefordirectory("select a directory");

function dirselected(e:event):void

下面看看指向檔案的例項:

var original:file = file.documentsdirectory.resolvepath("mousebomb/flashj.txt");

var newfile:file = file.resolvepath("mousebomb/flashjcn.txt");

original.copyto(newfile, true);

第二個引數true表示覆蓋存在的檔案,預設值是false,若設定為false,而拷貝的目標檔案已經存在,則air會發出ioerrorevent事件。

2.非同步拷貝例:

var original = file.documentsdirectory;

original = original.resolvepath("mousebomb/flashj.txt");

var destination:file = file.documentsdirectory;

destination = destination.resolvepath("flashj/flashjcn.txt");

original.addeventlistener(event.complete, filecopycompletehandler);

original.addeventlistener(ioerrorevent.io_error, filecopyioerroreventhandler);

original.copytoasync(destination);

function filecopycompletehandler(event:event):void

function filecopyioerroreventhandler(event:ioerrorevent):void

功能3、移動檔案和目錄

移動檔案使用的方法有moveto()和movetoasync(),不僅長相類似,連使用方法都與拷貝檔案一樣,可以直接參考上文。

功能4、刪除檔案和目錄(或移至**站)

deletefile()和deletefileasync()負責刪除功能,而movetotrash()和movetotrashasync()功能是移至**站。先建立乙個file物件指向某個檔案或目錄,然後執行四個方法之一,處理非同步方法要加事件監聽。

var file:file = file.documentsdirectory.resolvepath("deleteme.txt");

file.movetotrash();

功能5、列出某目錄中的檔案和目錄

可以使用getdirectorylisting()方法和getdirectorylistingasync()方法獲取某個目錄下檔案與子目錄的file指標陣列。

例如:var directory:file = file.documentsdirectory;

var contents:array = directory.getdirectorylisting();

for (var i:uint = 0; i < contents.length; i++)

本例輸出了使用者文件目錄中的檔名和大小。

若使用非同步方法,例如:

var directory:file = file.documentsdirectory;

directory.getdirectorylistingasync();

directory.addeventlistener(filelistevent.directory_listing, dirlisthandler);

function dirlisthandler(event:filelistevent):void }

其中directorylisting事件物件中有個files屬性,為目錄下內容的file指標陣列。

功能6、建立臨時檔案和資料夾

使用createtempfile()和createtempdirectory()方法可以建立臨時檔案和資料夾。

var temp:file = file.createtempfile(); //在系統臨時資料夾下建立臨時檔案

createtempfile()方法會自動建立乙個唯一的臨時檔案。

createtempdirectory ()方法會自動建立乙個唯一的臨時資料夾。

你可以用臨時檔案來臨時儲存應用程式回話中的資訊。

由於臨時檔案不會自動刪除,所以你可能得讓應用程式在關閉前刪除它。

功能7、建立目錄

使用createdirectory()方法可以建立目錄,例如:

var dir:file = file.userdirectory.resolvepath("mousebomb");

dir.createdirectory();

這個例子在使用者資料夾下建立了mousebomb目錄,如果mousebomb目錄存在,則不會作出操作。

功能8、讀取檔案資訊

file類中包含以下屬性,提供file物件所指向檔案或目錄的資訊。

屬性 描述

creationdate

建立日期

exists

是否存在

extension

副檔名,若無則為null

icon

該檔案的圖示物件

isdirectory

是否目錄

modificationdate

修改日期

name

檔名(包括副檔名)

nativepath

特定平台使用的檔案路徑

parent

父級目錄,若該file物件就是頂級則此屬性為null

size

位元組大小

url統一資源定位符

詳細參見air actionscript. 3.0 language reference for adobe air.

功能9、獲取檔案系統資訊

file類包含一下靜態屬性,提供有用的檔案系統資訊(主要是跨平台使用):

屬性 描述

file.lineending

系統的行結束符

file.separator

系統的分隔符(windows下為\ mac os為/)

file.systemcharset

系統的預設檔案編碼,屬於系統所使用的字符集

順便插進capabilities類包含的靜態屬性:

屬性 描述

capabilities.hasime

當前執行的系統是否安裝了輸入法編輯器

capabilities.language

當前執行的系統的語言編碼

capabilities.os

當前執行的作業系統

AIR檔案操作 一 AIR檔案基礎

air允許我們開發與檔案系統協同工作的應用程式 我們可以使用adobe?air?檔案系統api提供的類訪問主機的檔案系統。使用這些類,可以訪問 管理目錄與檔案,建立目錄與檔案,向檔案寫資料等等。我把與檔案系統協同工作的內容總結為air檔案操作三部分 下面進入air檔案操作第一部分 air提供了讓您能...

Flash AIR檔案操作 AIR檔案基礎

air允許我們開發與檔案系統協同工作的應用程式 我們可以使用adobe?air?檔案系統api提供的類訪問主機的檔案系統。使用這些類,可以訪問 管理目錄與檔案,建立目錄與檔案,向檔案寫資料等等。我把與檔案系統協同工作的內容總結為air檔案操作三部分 下面進入air檔案操作第一部分 air提供了讓您能...

xml檔案轉二進位制檔案的AIR

遊戲開發中,有很多xml可能是很大的,比如乙個任務配置檔案,可能就接近2m 當然全部檔案放在乙個xml裡面本身就有問題,比較好的做法就是分等級分隔xml 這樣就需要對xml進行壓縮。之前把檔案壓成zip包,然後讀取zip,但現在讀取zip檔案裡面的內容,是很卡的,後面改成讀取二進位制的xml資料,這...