AIR 2.0及以上提供了对系统的存储器信息访问和监听的API。通过这些API,你不仅可以访问到硬盘文件系统,同时还可以监听通过USB或火线进行连接的移动存储设备,例如移动硬盘和以存储方式连接到计算机的相机,MP3或手机等等。
你可以通过对系统存储器信息添加监听器来监听这些外部设备的连接、断开状态。

代码示例:

import flash.filesystem.StorageVolumeInfo;
import flash.events.StorageVolumeChangeEvent;
import flash.filesystem.StorageVolume;
import flash.filesystem.File;
var volumes:Vector.<StorageVolume > = new Vector.<StorageVolume > ;
volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();
for (var i:int = 0; i < volumes.length; i++)
{
trace(volumes[i].rootDirectory.nativePath);//每个装载的存储卷的根目录的本机路径
trace(volumes[i].name);//存储卷名称,命名即为null
trace(volumes[i].rootDirectory.getDirectoryListing());//存储卷根目录下文件列表
trace(volumes[i].drive);//存储卷盘符
//遍历所有存储卷根目录下是否存在DIGITALBOARD文件夹
for (var j:int = 0; j<volumes[i].rootDirectory.getDirectoryListing().length; j++)
{
//trace(volumes[i].rootDirectory.getDirectoryListing()[j].name);
if (volumes[i].rootDirectory.getDirectoryListing()[j].name == "DIGITALBOARD")
{
trace(volumes[i].rootDirectory.nativePath);
trace(File.desktopDirectory);
//var file:File = volumes[i].rootDirectory.nativePath
var file:File = File(volumes[i].rootDirectory.resolvePath(volumes[i].rootDirectory.nativePath + "DIGITALBOARD"));//+File.separator
trace(volumes[i].rootDirectory.nativePath+"DIGITALBOARD");
//file.copyTo(File.desktopDirectory);
//file.browseForOpen("打开");
//file.addEventListener(Event.SELECT,onSelect);
return;
}
}
}
function onSelect(e:Event):void
{
trace("select",e.target.name);
} //监听外部设备连接和断开状态
if (StorageVolumeInfo.isSupported)
{
trace("平台支持 StorageVolumeInfo 类");
//卷装入;
StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, onVolumeMount);
//存储卷卸载;
StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, onVolumeUnmount);
}
else
{
trace("平台不支持 StorageVolumeInfo 类");
} function onVolumeMount(e:StorageVolumeChangeEvent):void
{
trace( e.storageVolume.name,"检测到可移动磁盘" );
//trace( e.storageVolume.fileSystemType );
//trace( e.storageVolume.isRemovable );
//trace( e.storageVolume.isWritable );
//trace( e.storageVolume.rootDirectory );
//trace( e.storageVolume.rootDirectory.nativePath );
}
function onVolumeUnmount(e:StorageVolumeChangeEvent):void
{
trace( e.storageVolume.name,"卸载可移动磁盘" );
//trace(e.storageVolume.drive);
}

[AIR] 对存储器(Storage Volume)监听的更多相关文章

  1. storage 事件监听

    在公司的一次内部分享会上, 偶然知道了这个H5的新事件, 解决了我之前的一个bug. 事情是这样的, 第A网页上显示的数量的总和, 点击去是B页面, 可以进行管理, 增加或者删除, 当用户做了增删操作 ...

  2. HTML5 storage事件监听

    引用<h5移动web开发指南>上的话: “当同源页面的某个页面修改了localStorage,其余的同源页面只要注册了storage事件,就会触发” 所以,localStorage  st ...

  3. 详解vuex结合localstorage动态监听storage的变化

    这篇文章主要介绍了详解vuex结合localstorage动态监听storage的变化,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 需求:不同组件间共用同一数据,当一个 ...

  4. 在 Windows Server Container 中运行 Azure Storage Emulator(一):能否监听自定义地址?

    我要做什么? 改 ASE 的监听地址.对于有强迫症的我来说,ASE 默认监听的是 127.0.0.1:10000-10002,这让我无法接受,所以我要将它改成域名 + 80 端口的方式: 放到容器中. ...

  5. 换肤功能的实现以及监听storage实现多个标签页一起换肤

    1:需求:项目的侧边栏实现换肤功能,核心代码: updateSkin (val) { const existSkinLink = document.head.querySelector('link[i ...

  6. 在vue中监听storage的变化

    1.首先在main.js中给Vue.protorype注册一个全局方法,其中,我们约定好了想要监听的sessionStorage的key值为’watchStorage’,然后创建一个StorageEv ...

  7. Sdcard插拔、状态广播监听,Android文件系统,Android存储器相关知识总结

    一 SDcard广播监听,注册,取消注册的实现 (1)根据实际需要监听的事件,添加action,并注册,一般在onCreate中添加 //在IntentFilter中选择你要监听的行为 IntentF ...

  8. Oracle 11gR2 RAC修改监听默认端口

    一.修改SCAN listener port 1.1 修改SCAN listener port 1.2 重启SCAN listener生效新端口 1.3 确认更改 二.修改Listener Ports ...

  9. 涂抹Oracle笔记1-创建数据库及配置监听程序

    一.安装ORACLE数据库软件及创建实例OLTP:online transaction processing 指那些短事务,高并发,读写频繁的数据库系统.--DB_BLOCK_SIZE通常设置较小.O ...

随机推荐

  1. QUrl

    QUrl Detailed Description The QUrl class provides a convenient interface for working with URLs. It c ...

  2. Netty之Reactor模式

    无论是C++还是Java编写的网络框架,大多数都是基于Reactor模式进行设计和开发,Reactor模式基于事件驱动,特别适合处理海量的I/O事件. 1. 单线程模型 Reactor单线程模型,指的 ...

  3. c/c++笔试面试试题

    C 试题(纯属转载) 1.求下面函数的返回值(微软) int func(x) {     int countx = 0;     while(x)     {           countx ++; ...

  4. java基础知识汇总(持续更新中....)

    1.java四大特性:抽象.继承.封装,多态 构造函数: http://blog.csdn.net/qq_33642117/article/details/51909346 2.java数据基本类型: ...

  5. Luogu 4725 【模板】多项式对数函数

    继续补全模板. 要求 $$g(x) = ln f(x)$$ 两边求导, $$g'(x) = \frac{f'(x)}{f(x)}$$ 然后左转去把多项式求导和多项式求逆的模板复制过来,就可以计算出$g ...

  6. [Groovy]获取当前活动的Environment,获取response中节点的name和节点的value

    import com.eviware.soapui.support.GroovyUtils import com.eviware.soapui.support.XmlHolder import org ...

  7. jqgrid 单元格放超链接文本

    .前台 <%-- builed by manage.aspx.cmt [ver:] at // :: --%> <%@ Page Language="C#" Au ...

  8. input修改placeholder中颜色和字体大小

    input::-webkit-input-placeholder { /* placeholder颜色 */ color: #aab2bd; /* placeholder字体大小 */ font-si ...

  9. win10 64位 python3.6 django1.11 MysqlDB No module named 'MySQLdb' 安装MysqlDB报错 Microsoft Visual C++ 14.0 is required

    在python3.6中操作数据库,再按python2.7安装MySQLdb进行数据库连接已经不可用了,我使用的是另外一个方法:PyMySQL,安装好之后还是不能直接连接MySQL的,启动项目后报No ...

  10. Android Studio NDK环境配置

    本文参考:Android Studio NDK环境配置及JNI使用方法:http://blog.csdn.net/tongseng/article/details/53005123 并添加自己的实践: ...