AIR使用文件对象操作文件和目录

文件对象是啥?
文件对象(File对象)是在文件系统中指向文件或目录的指针。由于安全原因,只在AIR中可用。

文件对象能做啥?

  1. 获取特定目录,包括用户目录、用户文档目录、该应用程序启动的目录和程序目录
  2. 拷贝文件和目录
  3. 移动文件和目录
  4. 删除文件和目录(或移至回收站)
  5. 列出某目录中的文件和目录
  6. 创建临时文件和文件夹
  7. 创建目录
  8. 读取文件信息
  9. 获取文件系统信息

在AIR中,我们用FileStream读写文件的前提就是用File对象来指向文件。

那么文件对象具体怎么玩呢?

功能1、指向目录和文件
File对象有两个属性都能定义文件路径,它们是nativePath和url。nativePath是在特定平台使用的文件路径(主要就是Windows和MacOs上的路径表示不同),url则是统一的”file:///c:/Sample%20directory/test.txt”这样的表示方法。

我们来看几个指向目录的实例,其中1-7演示了如何获取特殊目录

  1. AS3代码

    1. var file:File = File.userDirectory; //指向用户文件夹
    2. var file:File = File.documentsDirectory; //指向用户文档文件夹
    3. var file:File = File.desktopDirectory; //指向桌面
    4. var file:File = File.applicationStorageDirectory; //指向应用程序存储目录
    5. (参见AIR的URL方案)
    6. var dir:File = File.applicationDirectory; //应用程序安装目录
    7. var dir:File = File.getRootDirectories(); //文件系统根目录

  2. 还有一招,指向请求启动该应用程序的目录,先空着,以后补上。参考资料见《Capturing command
    line arguments》
  3. AS3代码
    1. var file:File = new File();
    2. file.nativePath = "C://Mousebomb//";
    3. //(windows平台)指向一个具体的目录,这里使用了nativePath属性,”C://Mousebomb//”只适用windows中。

  4. AS3代码
    1. var file:File = File.userDirectory;
    2. file = file.resolvePath(”Mousebomb”);
    3. //跳转到用户目录下的Mousebomb目录
    4. var urlStr:String = "file:///C:/Mousebomb/";
    5. var file:File = new File()
    6. file.url = urlStr;
    7. //指向c盘下的Mousebomb目录,这里使用了url属性
    8. /*让用户选择目录*/
    9. var file:File = new File();
    10. file.addEventListener(Event.SELECT, dirSelected);
    11. file.browseForDirectory("Select a directory");
    12. function dirSelected(e:Event):void {
    13. trace(file.nativePath);
    14. }

下面看看指向文件的实例:

  1. 指向明确的文件地址:

    AS3代码

    1. var file:File = File.applicationStorageDirectory;
    2. file = file.resolvePath("Flashj.txt");
  2. 使用url属性的例子:

    AS3代码

    1. var urlStr:String = "file:///C:/Mousebomb/Flashj.txt";
    2. var file:File = new File()
    3. file.url = urlStr;
  3. 当然你也可以直接这样写

    AS3代码

    1. var urlStr:String = "file:///C: /Mousebomb/Flashj.txt";
    2. var file:File = new File(urlStr);
    3. //url中的空格会被%20替换
  4. 使用nativePath属性:

    AS3代码

    1. var file:File = new File();
    2. file.nativePath = "C:/ Mousebomb/Flashj.txt";
  5. 或者

    AS3代码

    1. var file:File = new File("C:/ Mousebomb/Flashj.txt");
    2. //(Windows下)
  6. 通过对话框让用户选择文件
    实现这个功能需要认识三个方法:
    browseForOpen()
    browseForSave()
    browseForOpenMultiple()
    三个方法都是异步的,browseForOpen() 和 browseForSave()方法在用户选择文件时会触发select事件,在选择了某文件时,File指向选择的文件。 而browseForOpenMultiple()方法会触发selectMultiple事件,该事件属于FileListEvent型,它的属性中具有指向所选文件的File对象数组。
    例子:

    AS3代码

    1. var fileToOpen:File = File.documentsDirectory;
    2. selectTextFile(fileToOpen);
    3. function selectTextFile(root:File):void
    4. {
    5. var txtFilter:FileFilter = new FileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml");
    6. root.browseForOpen("Open", [txtFilter]);
    7. root.addEventListener(Event.SELECT, fileSelected);
    8. }
    9. function fileSelected(event:Event):void
    10. {
    11. trace(fileToOpen.nativePath);
    12. }

功能2、拷贝文件和目录
拷贝文件使用到的方法有copyTo()和copyToAsync(),详见AIR文件基础,前者为同步方法,后者为异步方法。
要拷贝文件,需要创建2个File对象,一个指向原文件,一个指向目标文件。像下面两例:
1.同步拷贝例:

AS3代码

  1. var original:File = File.documentsDirectory.resolvePath("Mousebomb/FlashJ.txt");
  2. var newFile:File = File.resolvePath("Mousebomb/FlashJcn.txt");
  3. original.copyTo(newFile, true);

第二个参数true表示覆盖存在的文件,默认值是false,若设置为false,而拷贝的目标文件已经存在,则AIR会发出IOErrorEvent事件。
2.异步拷贝例:

AS3代码

  1. var original = File.documentsDirectory;
  2. original = original.resolvePath("Mousebomb/FlashJ.txt");
  3. var destination:File = File.documentsDirectory;
  4. destination = destination.resolvePath("FlashJ/FlashJcn.txt");
  5. original.addEventListener(Event.COMPLETE, fileCopyCompleteHandler);
  6. original.addEventListener(IOErrorEvent.IO_ERROR, fileCopyIOErrorEventHandler);
  7. original.CopyToAsync(destination);
  8. function fileCopyCompleteHandler(event:Event):void {
  9. trace(event.target); // [object File]
  10. }
  11. function fileCopyIOErrorEventHandler(event:IOErrorEvent):void {
  12. trace("I/O Error.");
  13. }

功能3、移动文件和目录
移动文件使用的方法有moveTo()和MoveToAsync(),不仅长相类似,连使用方法都与拷贝文件一样,可以直接参考上文。

功能4、删除文件和目录(或移至回收站)
deleteFile()和deleteFileAsync()负责删除功能,而moveToTrash()和moveToTrashAsync()功能是移至回收站。先创建一个File对象指向某个文件或目录,然后执行四个方法之一,处理异步方法要加事件监听。

AS3代码

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

功能5、列出某目录中的文件和目录
可以使用getDirectoryListing()方法和getDirectoryListingAsync()方法获取某个目录下文件与子目录的File指针数组。
例如:

AS3代码

  1. var directory:File = File.documentsDirectory;
  2. var contents:Array = directory.getDirectoryListing();
  3. for (var i:uint = 0; i < contents.length; i++)
  4. {
  5. trace(contents[i].name, contents[i].size);
  6. }

本例输出了用户文档目录中的文件名和大小。
若使用异步方法,例如:

AS3代码

  1. var directory:File = File.documentsDirectory;
  2. directory.getDirectoryListingAsync();
  3. directory.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler);
  4. function dirListHandler(event:FileListEvent):void
  5. {
  6. var contents:Array = event.files;
  7. for (var i:uint = 0; i < contents.length; i++)
  8. {
  9. trace(contents[i].name, contents[i].size);
  10. }
  11. }

其中directoryListing事件对象中有个files属性,为目录下内容的File指针数组。

功能6、创建临时文件和文件夹
使用createTempFile()和createTempDirectory()方法可以创建临时文件和文件夹。
var temp:File = File.createTempFile(); //在系统临时文件夹下创建临时文件
createTempFile()方法会自动创建一个唯一的临时文件。
createTempDirectory ()方法会自动创建一个唯一的临时文件夹。
你可以用临时文件来临时存储应用程序回话中的信息。
由于临时文件不会自动删除,所以你可能得让应用程序在关闭前删除它。

功能7、创建目录
使用createDirectory()方法可以创建目录,例如:

AS3代码

  1. var dir:File = File.userDirectory.resolvePath("Mousebomb");
  2. 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


系统的默认文件编码,属于系统所使用的字符集

时间: 2024-08-03 13:32:21

AIR使用文件对象操作文件和目录的相关文章

【Python】 文件和操作文件方法

文件 ■ 基本的文件用法 f = open("path","mode") mode有a,w,r,b,+等.默认为r.模式与打开文件时的动作有关系,比如用w打开的话肯定会清空文件再写,而a的话打开时就不会清空文件而是直接append内容 f.read()/write(...) f.close() 在很多示例中,打开文件用的都是这样一种方法: with open("path","mode") as f: f.操作 不用再手动关闭文

PHP读取文件及操作文件的各种实例

PHP读取文件各种实例 php操作文件实例说明_读取写入文件 => http://www.q3060.com/list3/list117/23443.html PHP 读取文件乱码的解决方法 => http://www.q3060.com/list3/list117/17312.html PHP中读取目录下的所有文件 => http://www.q3060.com/list3/list117/10918.html php读取文件的范例代码 => http://www.q3060.c

PHP文件处理--操作文件

除了可以对文件内容进行读写,对文件本身同样也可以进行操作,如复制文件.重新命名.查看修改日期等.PHP内置了大量的文件操作函数,常用的文件函数如下表: 函数原型 函数说明 举例 bool copy(string path1,string path2) 将文件从path1复制到path2.如果成功则返回true,失败返回false. copy('tm.txt','../tm.txt') bool rename(string filename1,string filename2) 把name1重新命

IO编程、操作文件或目录、序列化、JSON

IO中指Input/Output,即输入和输出:涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口 1.由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,存在速度严重不匹配问题.eg:把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘接收100M数据可能需要10秒,怎么办呢,有两种办法: ①.CPU等着,也就是程序暂停执行后续代码,等100M数据在10s后写入磁盘,再接着往下执行,这种模式称为同步IO ②.CPU不等待,只是告诉磁盘,"慢慢写,不着急,

Javascript操作文件

可以通过浏览器在访问者的硬盘上创建文件 JavaScript操作文件系统创建快捷方式 可以通过浏览器在访问者的硬盘上创建文件,因为我开始试了一下真的可以,不信你把下面这段代码COPY到一个HTML文件当中再运行一下! <script language="JavaScript"> <!-- var fso = new ActiveXObject("Scripting.FileSystemObject"); fso.DeleteFile("c

Spring 的优秀工具类盘点,第 1 部分: 文件资源操作和 Web 相关工具类

?文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来说,JDK 的这些操作类所提供的方法过于底层,直接使用它们进行文件操作不但程序编写复杂而且容易产生错误.相比于 JDK 的 File,Spring 的 Resource 接口(资源概念的描述接口)抽象层面更高且涵盖面更广,Spring 提供了许多方便易用的资源操作工具类,它们大大降低资源操作的复杂

python2.7入门---file(文件)&amp;OS 文件&amp;目录方法

    首先file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 序号 方法及描述 1 file.close() 关闭文件.关闭后文件不能再进行读写操作. 2 file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入. 3 file.fileno() 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上. 4 file.isatty() 如果文

python之文件对象

防伪码忘情公子著 文件对象是用来访问文件系统接口所对应的数据的 文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构-即在磁盘上组织文件的方法 计算机文件或称文件.电脑档案.档案是存储在某种长期储存设备或临时存储设备中的一段数据流并且归属于计算机文件系统管理之下 概括来讲 文件是计算机中由OS管理的具有名字的存储区域 在Linux系统上文件被看做是字节序列 要想把数据存储到文件中有一个前提那就是必须序列化非序列化的数据是不能简单的存储在文件系统中的文件中的 对于python来说文件对象不仅可

java实现客户端向服务器发送文件的操作

服务器源代码: import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket;