Flex AIR 文件对象操作
功能1、指向目錄和文件
File對象有兩個屬性都能定義文件路徑,它們是nativePath和url。nativePath是在特定平臺使用的文件路徑(主要就是Windows和MacOs上的路徑表示不同),url則是統一的”file:///c:/Sample/test.txt”這樣的表示方法。
?
我們來看幾個指向目錄的實例,其中1-7演示了如何獲取特殊目錄:?
var file:File = File.userDirectory; //指向用戶文件夾 var file:File = File.documentsDirectory; //指向用戶文檔文件夾 var file:File = File.desktopDirectory; //指向桌面var file:File = File.applicationStorageDirectory; //指向應用程序存儲目錄(參見AIR的URL方案) var dir:File = File.applicationDirectory; //應用程序安裝目錄 var dir:File = File.getRootDirectories(); //文件系統根目錄?
還有一招,指向請求啟動該應用程序的目錄,先空著,以后補上。參考資料見《Capturingcommand line arguments》?
var file:File = new File(); file.nativePath = "C:\\Mousebomb\\"; //(windows平臺)指向一個具體的目錄,這里使用了nativePath屬性,”C:\\Mousebomb\\”只適用windows中。 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 { trace(file.nativePath); }?
下面看看指向文件的實例:?
?
指向明確的文件地址:?
var file:File = File.applicationStorageDirectory; file = file.resolvePath("Flashj.txt");?
使用url屬性的例子:?
var urlStr:String = "file:///C:/Mousebomb/Flashj.txt"; var file:File = new File() file.url = urlStr;?
當然你也可以直接這樣寫
var urlStr:String = "file:///C: /Mousebomb/Flashj.txt"; var file:File = new File(urlStr); //url中的空格會被%20替換?
使用nativePath屬性:?
var file:File = new File(); file.nativePath = "C:/ Mousebomb/Flashj.txt";?
或者?
var file:File = new File("C:/ Mousebomb/Flashj.txt"); //(Windows下)?
通過對話框讓用戶選擇文件?
實現這個功能需要認識三個方法:?
browseForOpen()?
browseForSave()?
browseForOpenMultiple()?
三個方法都是異步的,browseForOpen() 和 browseForSave()方法在用戶選擇文件時會觸發select事件,在選擇了某文件時,File指向選擇的文件。
而browseForOpenMultiple()方法會觸發selectMultiple事件,該事件屬于FileListEvent型,它的屬性中具有指向所選文件的File對象數組。
例子:?
var fileToOpen:File = File.documentsDirectory; selectTextFile(fileToOpen); function selectTextFile(root:File):void { var txtFilter:FileFilter = new FileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml");root.browseForOpen("Open", [txtFilter]); root.addEventListener(Event.SELECT, fileSelected); } function fileSelected(event:Event):void { trace(fileToOpen.nativePath); }?
?
功能2、拷貝文件和目錄?
拷貝文件使用到的方法有copyTo()和copyToAsync(),詳見AIR文件基礎,前者為同步方法,后者為異步方法。
要拷貝文件,需要創建2個File對象,一個指向原文件,一個指向目標文件。像下面兩例:?
?
1.同步拷貝例:?
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 { trace(event.target); // [object File] } function fileCopyIOErrorEventHandler(event:IOErrorEvent):void { trace("I/O Error."); }?
?
功能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++) { trace(contents[i].name, contents[i].size); }?
本例輸出了用戶文檔目錄中的文件名和大小。?
若使用異步方法,例如:?
var directory:File = File.documentsDirectory; directory.getDirectoryListingAsync(); directory.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler); function dirListHandler(event:FileListEvent):void { var contents:Array = event.files; for (var i:uint = 0; i < contents.length; i++) { trace(contents[i].name, contents[i].size); } }?
其中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 當前運行的操作系統
轉載于:https://www.cnblogs.com/helloquan/p/5686371.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Flex AIR 文件对象操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python标准模块--logging
- 下一篇: AI - 机器学习(Machine Le