文件对象是啥?
文件对象(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; //指向用户文件夹
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(); //文件系统根目录
还有一招,指向请求启动该应用程序的目录,先空着,以后补上。参考资料见《Capturing command
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
当前运行的操作系统
参考文献:http://livedocs.adobe.com/air/1/devappsflash/help.html?content=dg_part_6_1.html(文件与数据)
分享到:
相关推荐
##### 1.6 AIR文件结构 - **应用程序描述文件**:定义应用程序的基本属性,如名称、版本号等。 - **资源文件**:包括程序代码、图像资源等。 - **其他配置文件**:如安全性设置等。 #### 第二章:设置FlexBuilder ...
Flex Air压缩和读取zip文件是一项在开发过程中经常会遇到的任务,尤其在处理大量数据或文件传输时。这个主题主要涉及到Flex、Adobe AIR以及ZipArchive库的使用。让我们深入了解一下这些概念和技术。 首先,Flex是一...
在本文中,我们将深入探讨如何实现Flex与Java Servlet结合进行文件上传。首先,我们需要了解Flex是一种基于Adobe AIR的开源框架,用于构建富互联网应用程序(RIA),而Java Servlet是Java平台上的一个标准,用于处理...
- **平台特定路径**: 使用`nativePath`属性可以获得特定于操作系统的文件路径表示形式,这对于跨平台应用程序来说非常重要。 2. **构建JPEG文件上载程序** - **文件上传**: 通过集成文件选择器组件并使用...
在本篇文章中,我们将深入探讨如何使用Flex与Adobe AIR技术来执行本地的exe与bat文件。根据提供的文件信息,文章标题“flex air 代码运行 exe 、bat”以及描述部分都明确指出了这一主题的核心——利用Flex程序启动...
综上所述,这个flex AIR MP3播放器项目涉及了多种技术和概念,包括前端开发、音频处理、文件系统操作、网络编程以及事件驱动的用户交互。开发者通过集成这些技术,创建了一个功能齐全、跨平台的音乐播放解决方案。
例如,`new SQLConnection()` 创建连接对象,然后调用`open()` 方法指定数据库文件路径来打开或创建数据库。 3. **SQL语句执行**:`SQLStatement` 类用于执行SQL命令。你可以使用`SQLStatement.execute()` 方法执行...
- **本地存储**:如何利用AIR访问和操作本地文件系统。 - **网络通信**:实现HTTP请求,使用Socket或XMLSocket进行实时通信。 - **桌面集成**:利用AIR API实现与操作系统功能的交互,如拖放、桌面通知等。 - **调试...
你可以创建一个File对象来表示特定的文件路径,或者获取用户的文档、桌面等特殊位置。例如,`var file:File = new File("C:/example.txt");` 这行代码将创建一个File对象,指向名为"example.txt"的文件。 接下来是...
Adobe Flex框架利用了Adobe Flash Player和Adobe AIR运行时环境,使得开发者能够创建出功能丰富且视觉效果出众的应用程序。 #### Flex编程入门 ##### 创建第一个Flex应用程序 1. **启动Flex Builder**:首先启动...
为了深入学习FLEX,你可以查阅官方文档,参加在线课程,或者加入开发者社区,如Stack Overflow和Flex开发者论坛,获取更多实践经验和解决方案。 总之,FLEX是一个强大的工具,能够帮助开发者创建互动性强、功能丰富...
`Flex`是一种基于Adobe Flash Player或Adobe AIR运行时的富互联网应用程序(RIA)开发框架,而`Servlet`则是Java Web开发中的服务器端组件,常用于处理HTTP请求。 首先,我们要理解`Flex`在文件上传中的作用。在`...
3. **设置外部SDK**:在开发环境中配置AIR和Flex SDK的路径,以便于项目构建。 **五、创建AIR应用程序** 1. **在Flash Builder中创建Flex AIR应用程序**:使用Flash Builder IDE,开发者可以创建、调试和部署桌面...
它提供了许多方法来获取和操作文件系统中的路径。 3. **ApplicationDirectory**:这是`File`类的一个静态属性,表示应用程序的安装目录。通常,我们不建议在该目录下存储用户数据,因为它在更新应用程序时可能会被...
总结来说,将Flex组件保存为本地PNG图片涉及多个步骤,包括组件的位图渲染、PNG编码以及本地文件操作。理解并掌握这些技术对于Flex开发者来说是非常有价值的,特别是当需要提供用户离线查看组件或图表功能时。通过...
Flex是一个用于构建富互联网应用程序(RIA)的框架,基于ActionScript和MXML语言,通常与Adobe Flash Player或Adobe AIR一起使用。 首先,我们来了解Flex Library Project。它是一个特殊类型的Flex项目,不直接编译...
- 用户启动应用,`PhotoGallery.mxml`加载并解析XML配置文件,获取图片列表。 - 数据绑定机制将这些信息传递给`GalImage`和`GalNavigatorButton`组件。 - 用户点击导航按钮,触发事件,`GalImage`组件根据事件...
下载完成后,将其解压到合适的位置,并在MyEclipse中配置相应的SDK路径,使得IDE能够识别和使用Flex工具链。 2. **MyEclipse中的Flex支持** MyEclipse提供了对Flex开发的良好支持,可以通过插件的形式添加Flex ...
总结,Flex解析XML文件主要通过XML和XMLList类,它们提供了丰富的API来操作XML数据。理解这些概念和方法,将有助于你在Flex应用中有效地处理和展示XML数据。无论是简单的数据展示还是复杂的交互逻辑,Flex都能通过...
- `.flexProperties`:Flex项目的配置文件,包含编译选项和库路径。 - `.project`:Eclipse或Flex Builder项目文件,定义了项目结构和构建设置。 - `bin`:编译后生成的SWF或其他输出文件所在的目录。 - `...