日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Flash air操作本地文件

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Flash air操作本地文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件操作類

Flash?AIR提供了讓您能用來訪問、創建、管理文件與目錄的類。這些類被放置在flash.filesystem包中,也就是下面那三個類:

描述

File

File對象代表一個文件或目錄的路徑。您可以用file對象建立一個指向文件或目錄的指針,以作用于文件或目錄。

FileMode

FileMode類定義在FileStream類的open()和openAsync()方法中使用的字符串常量參數。
這些方法的FileMode參數確定了文件打開后FileStream對象可用的功能,包括寫入、讀取、追加和更新。

FileStream

FileStream對象打開文件以便讀寫數據。當創建一個File對象指向一個新的或已存在的文件后,您將該指針傳遞給FileStream對象,就可以用FileStream來打開并操作文件數據。

File類中的某些方法分別有同步和異步兩種版本:

·?File.copyTo() 和 File.copyToAsync()

·?File.deleteDirectory() 和File.deleteDirectoryAsync()

·?File.deleteFile() 和File.deleteFileAsync()

·?File.getDirectoryListing() 和File.getDirectoryListingAsync()

·?File.moveTo() 和File.moveToAsync()

·?File.moveToTrash() 和File.moveToTrashAsync()

同樣,FileStream是以同步或異步方式來操作數據,取決于FileStream對象如何打開文件:是調用open()方法還是調用openAsync()方法。

異步版本的處理過程在后臺運行,當執行完成或產生錯誤時觸發相應事件。其他代碼可以在這些異步操作后臺運行的同時執行。使用異步版本操作,你必須設置事件監聽,使用File或FileStream對象的addEventListener()方法調用相應函數。

同步版本使您不需要依賴設置事件監聽,直接寫簡單的代碼。然而,其他代碼無法在同步方法執行時執行,重要的進程(比如顯示對象渲染和動畫播放)可能被暫停。

使用文件對象操作文件和目錄

什么是文件對象?

文件對象(File對象)是在文件系統中指向文件或目錄的指針。由于安全原因,只在AIR中可用。

在AIR中,我們用FileStream讀寫文件的前提就是用File對象來指向文件。

兩種路徑表示方法

File對象有兩個屬性都能定義文件路徑,它們是nativePath和url。nativePath是在特定平臺使用的文件路徑(主要就是Windows和MacOs上的路徑表示不同),url則是統一的”file:///c:/Sample%20directory/test.txt”這樣的表示方法。

獲取特殊目錄的方法

var file:File = File.userDirectory; //指向用戶文件夾 var file:File = File.documentsDirectory; //指向用戶文檔文件夾 var file:File = File.desktopDirectory; //指向桌面 var file:File = File.applicationStorageDirectory; //指向應用程序存儲目錄 var dir:File = File.applicationDirectory; //應用程序安裝目錄 var dir:File = File.getRootDirectories(); //文件系統根目錄

獲取指定目錄:

1.本地路徑

//(windows平臺)指向一個具體的目錄,這里使用了nativePath屬性,”C:Mousebomb”只適用windows中。 var file:File = newFile(); file.nativePath = "C:Mousebomb"; //跳轉到用戶目錄下的Mousebomb目錄 var file:File = File.userDirectory; file = file.resolvePath(“Mousebomb”);

2.url路徑

//指向c盤下的Mousebomb目錄,這里使用了url屬性 var urlStr:String = "file:///C:/Mousebomb/"; var file:File = newFile(); file.url = urlStr;

讓用戶選擇目錄

var file:File = newFile(); file.addEventListener(Event.SELECT, dirSelected); file.browseForDirectory("Select a directory"); function dirSelected(e:Event):void{ trace(file.nativePath); }

獲取文件

1.?指向明確的文件地址:

var file:File = File.applicationStorageDirectory;

file = file.resolvePath("Flashj.txt");

2.?使用url屬性的例子:

var urlStr:String = "file:///C:/Mousebomb/Flashj.txt";

var file:File = newFile()

file.url = urlStr;

3.?當然你也可以直接這樣寫

var urlStr:String = "file:///C: /Mousebomb/Flashj.txt";

var file:File = newFile(urlStr);//url中的空格會被%20替換

4.?使用nativePath屬性:

var file:File = newFile();

file.nativePath = "C:/ Mousebomb/Flashj.txt";

或者

var file:File = newFile("C:/ Mousebomb/Flashj.txt");

//(Windows下)

?5.用windows默認程序打開指定文件

file.openWithDefaultApplication();


通過對話框讓用戶選擇文件

實現這個功能需要認識三個方法:
browseForOpen()
browseForSave()
browseForOpenMultiple()
三個方法都是異步的,browseForOpen() 和 browseForSave()方法在用戶選擇文件時會觸發select事件,在選擇了某文件時,File指向選擇的文件。 而browseForOpenMultiple()方法會觸發selectMultiple事件,該事件屬于FileListEvent型,它的屬性中具有指向所選文件的File對象數組。

例子:

var fileToOpen:File = File.documentsDirectory; selectTextFile(fileToOpen); functionselectTextFile(root:File):void { var txtFilter:FileFilter = newFileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml"); root.browseForOpen("Open", [txtFilter]); root.addEventListener(Event.SELECT, fileSelected); } function fileSelected(event:Event):void { trace(fileToOpen.nativePath); }

拷貝文件和目錄

要拷貝文件,需要創建2個File對象,一個指向原文件,一個指向目標文件。

同步拷貝,必須等拷貝完成之后才能執行其他代碼:

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事件。

異步拷貝,將拷貝放在后臺執行,可以同時執行其他代碼:

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); functionfileCopyCompleteHandler(event:Event):void{ trace(event.target); // [object File] } functionfileCopyIOErrorEventHandler(event:IOErrorEvent):void{ trace("I/O Error."); }

移動文件和目錄

使用函數moveTo()和MoveToAsync(),方法和拷貝一樣。

刪除文件和目錄(或者移動到回收站)

deleteFile()和deleteFileAsync()負責刪除功能,而moveToTrash()和moveToTrashAsync()功能是移至回收站。先創建一個File對象指向某個文件或目錄,然后執行四個方法之一,處理異步方法要加事件監聽。

var file:File = File.documentsDirectory.resolvePath("DeleteMe.txt"); file.moveToTrash();

列出目錄中的文件或目錄

可以使用getDirectoryListing()方法和getDirectoryListingAsync()方法獲取某個目錄下文件與子目錄的File指針數組。

同步的方法:

//輸出用戶文檔目錄中的文件名和大小 var directory:File = File.documentsDirectory; var contents:Array = directory.getDirectoryListing(); for(var i:uint = 0; i < contents.length; i++) { trace(contents[i].name, contents[i].size); } 異步的方法:

var directory:File = File.documentsDirectory; directory.getDirectoryListingAsync(); directory.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler); functiondirListHandler(event:FileListEvent):void { varcontents:Array = event.files;//directoryListing事件對象中有個files屬性,為目錄下內容的File指針數組。 for(vari:uint = 0; i < contents.length; i++) { trace(contents[i].name, contents[i].size); } }


創建臨時文件和文件夾

使用createTempFile()和createTempDirectory()方法可以創建臨時文件和文件夾。
var temp:File = File.createTempFile(); //在系統臨時文件夾下創建臨時文件
createTempFile()方法會自動創建一個唯一的臨時文件。
createTempDirectory ()方法會自動創建一個唯一的臨時文件夾。
你可以用臨時文件來臨時存儲應用程序回話中的信息。
由于臨時文件不會自動刪除,所以你可能得讓應用程序在關閉前刪除它。


創建目錄

使用createDirectory()方法可以創建目錄,例如:

1.?vardir:File = File.userDirectory.resolvePath("Mousebomb");

2.?dir.createDirectory();

這個例子在用戶文件夾下創建了Mousebomb目錄,如果Mousebomb目錄存在,則不會作出操作。


讀取文件信息

File類中包含以下屬性,提供File對象所指向文件或目錄的信息。

屬性

描述

creationDate

創建日期

exists

是否存在

extension

擴展名,若無則為null

icon

該文件的圖標對象

isDirectory

是否目錄

modificationDate

修改日期

name

文件名(包括擴展名)

nativePath

特定平臺使用的文件路徑

parent

父級目錄,若該File對象就是頂級則此屬性為null

size

字節大小

url

統一資源定位符


獲取文件系統信息

File類包含一下靜態屬性,提供有用的文件系統信息(主要是跨平臺使用):

屬性

描述

File.lineEnding

系統的行結束符

File.separator

系統的分隔符(Windows下為Mac Os/)

File.systemCharset

系統的默認文件編碼,屬于系統所使用的字符集?

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

屬性

描述

Capabilities.hasIME

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

Capabilities.language

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

Capabilities.os

當前運行的操作系統





總結

以上是生活随笔為你收集整理的使用Flash air操作本地文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。