首页 > 其他分享 >FLEX AIR实践—删除ApplicationDirectory目录下文件

FLEX AIR实践—删除ApplicationDirectory目录下文件

时间:2023-05-26 12:03:33浏览次数:53  
标签:xml FLEX ApplicationDirectory File fileStream AIR applicationDirectory file test


AIR的文件目录类型有以下几种:
File.userDirectory                                 //指向用户文件夹
File.documentsDirectory                       //指向用户文档文件夹
File.desktopDirectory                           //指向桌面
File.applicationStorageDirectory          //指向应用程序存储目录
File.applicationDirectory                      //应用程序安装目录

 

当我们把文件放在AIR工程目录下(例如放在当前目录下)时,通过以下方式是无法读取文件的

File.documentsDirectory.resolvePath('test.xml');

正确的读取文件方法是:

File.applicationDirectory.resolvePath('test.xml');

 

但是applicationDirectory目录下的文件为只读属性
(参考:http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/flash/filesystem/File.html

 

如果需要删除该文件或是写入该文件,采用以上方法进行操作会报错(安全箱错误),为了解决此问题,我采用了以下方法读取文件:

var file:File=new File(); 
file.nativePath=File.applicationDirectory.nativePath + '//document//test.xml';
var fileStream:FileStream=new FileStream();
fileStream.open(file, FileMode.READ);
testXML=XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();

 

删除文件时采用以下方法:

var file:File=new File(); 
file.nativePath=File.applicationDirectory.nativePath + '//document//test.xml';
file.deleteFile();

以下是完整例子:
test.xml(创建在项目src/document/下)

<?xml version="1.0" encoding="UTF-8"?>
<statements>
  <statement>
    <name> test </name>
   </statement>
   <statement>
    <name> test1 </name>
   </statement>
</statements>

FileTest.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
						layout="absolute"
						creationComplete="init()">
	<mx:Script>
		<!--[CDATA[
			import mx.controls.Alert;
			var testXML:XML;

			private function init():void
			{
				var file:File=new File(); 
				file.nativePath=File.applicationDirectory.nativePath + '//document//test.xml';
				 var fileStream:FileStream=new FileStream();
				fileStream.open(file, FileMode.READ);
				testXML=XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
				fileStream.close();
				Alert.show(testXML.toString()); 


			}

			private function deleteFile():void
			{
				var file:File=new File();
				file.nativePath=File.applicationDirectory.nativePath + '//document//test.xml';
				file.addEventListener(Event.COMPLETE, completeHandler)
				file.deleteFileAsync();


			}

			function completeHandler(event:Event):void
			{
				Alert.show("Deleted.")
			}
		]]-->
	</mx:Script>
	<mx:Button x="371"
			   y="69"
			   label="Delete file"
			   click="deleteFile()"/>

</mx:WindowedApplication>

标签:xml,FLEX,ApplicationDirectory,File,fileStream,AIR,applicationDirectory,file,test
From: https://blog.51cto.com/u_16129500/6354861

相关文章

  • FLEX AIR实践—FLEX AIR XML Encode Bug
     这几天在用AIR程序通过WebService进行数据传输时发现了以下问题:用WebService传输‘A&B’内容到目的地,再从目的地将数据通过WebService获取到本地,结果数据变成了'A&amp;B';于是开始进行以下测试:将'A&B'替换成'A&amp;B'——>获取结果为'A&amp;amp;B'测试了其他转义字符也得到了同样......
  • FLEX实践—XML HttpService加载错误
    主应用代码:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center" verticalAlign="middle" creationComplete="init......
  • FLEX SharedObject介绍及应用
    以下内容是对网上一些资料的总结FlexSharedObject介绍(Flash的本地共享对象是在用户机器上实现持久化存储的数据集合。Flash可以从程序中控制这些数据集合,向其中存入或者从中读取大量的信息数据。使用SharedObject对象对象说明:SharedObject(共享对象)可以看作是小型的数据库,我......
  • FLEX实践—自动发送邮件
    代码:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Script><!--[CDATA[importflash.net.navigateToUR......
  • FLEX实践—控件内容与String显示区别
     在解释这个区别之前先来看一段示例:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Script><!--[CDATA[i......
  • FLEX实践—计算指定日期是当年/当月第几周
    计算指定日期是当月第几周:privatefunctionweekOfMonth(yyyy:Number,mm:Number,dd:Number):Number { varmyDate=newDate(yyyy,mm-1,dd); vardiff=myDate.getDate()-1; myDate.setDate(1); vardateWeek=7-myDate.getDay(); if(diff>date......
  • FLEX实践—加载XML文件错误
        这两天在研究一个FLEX小相册,准备做一个超级简单的纯FLEX相册,没想到在读取XML文件的时候遇到了这样一个问题:    1)用FLEXBUILDER创建了一个FLEX工程    2)写了一个MXML文件,一个XML文件    3)在程序中用HTTPService和URLRequest两种方法分别读取XML文件内容 ......
  • FLEX实践—获取当前窗口大小
       在FLEX中获取当前窗口的长度与宽度使用下面的方法:   Application.application.width   Application.application.height    在设置弹出窗口的长与宽的时候可以根据比例来设置,而不用将其长与宽设置为固定值。这样做的好处是考虑到了IE窗口的大小,通过比例设置可......
  • RUBY-FLEX实践—利用swfobject在RUBY工程中加载SWF
    开发环境:Ruby:Ruby1.9.1Rails:Rails2.3.5IDE:RubyMine2.0.1FlexBuilder:FlexBuilder4 开发思路:1)在FlexBuilder中创建Flex工程2)在RubyMine中创建Rails工程3)将Flex工程bin-debug下编译的swfobject.js拷贝至Ruby工程指定位置4)引用Flex工程编译后的html中的内容实现在Rails页面中嵌......
  • FLEX4 序列号失效
    愚人节这天,FLASHBUILDER也和大家开了个玩笑,一大早起来,序列号被封了。上网搜了一下,果然天无绝人之路 但是我换了序列号仍然无法使用 再看以下这位高手的:方法1:暂时把系统时间改到2008,启动后再调回现在的时间。方法2:解压后存入Flex的安装文件夹plugins/com.adobe.flexide.amt_4.0.......