一个疯狂的想法刚刚从天而降,击中我的头部xD。当用户将新文件“添加”到目录中时,我想知道是否可以使用和App能够收听。
示例:
听起来很有意思吗?
也许,这可以使用像Visual Basic这样的编程语言来完成,并使用NativeProcess api打开可执行文件并监听stdOut事件......(:
有人有想法和我们分享? :)
由于 隆巴迪
答案 0 :(得分:0)
AIR可以原生处理......
只要被监视目录中的文件发生更改,FileSystemList类就会触发事件directoryChange。
您甚至可以使用它来观察正在安装的驱动器(我认为Christian Cantrell显示了一个驱动器)
答案 1 :(得分:-1)
好的,我想我越来越近了,看看这个解决方案! :)
private var CheckDelay:Timer = new Timer(5000, 0);
private function InitApp():void
{
CheckDelay.addEventListener(TimerEvent.Timer, CheckForNewFiles, false, 0, true);
CheckDelay.start();
}
private function CheckForNewFiles(event:TimerEvent):void
{
var FS:FileStream = new FileStream();
var Buffer:File = File.applicationStorageDirectory.resolvePath("FilesBuffer.cmd");
FS.open(Buffer, FileMode.Write);
FS.writeUTFBytes("cd " + File.desktopDirectory.nativePath + "\r\n" +
"dir /on /b > " + File.applicationStorageDirectory.resolvePath("FileList.txt").nativePath);
FS.close();
var Process:NativeProcess = new NativeProcess();
var NPI:NativeProcessStartupInfo = NativeProcessStartupInfo(); // What a large name! xD
NPI.executable = Buffer;
Process.start(NPI);
Process..addEventListener(NativeProcessExitEvent.EXIT, ReadFileList, false, 0, true);
}
private function ReadFileList(event:Event):void
{
var FS:FileStream = new FileStream();
var Buffer:File = File.applicationStorageDirectory.resolvePath("FilesBuffer.cmd");
FS.open(Buffer, FileMode.Read);
var FileData:String = FS.readUTFBytes(FS.bytesAvailable);
FS.close();
var FileArray:Array = FileData.split("\r\n");
var TempArray:ArrayCollection = new ArrayColletion();
var TempFile:File;
for(var i:int = 0;i<FileArray.length;i++){
TempFile = new File(FileArray[i]);
TempArray.addItem(TempFile);
}
}
最后,我们得到了一个数组(TempArray),我们可以在数据网格(例如)上使用这些数据集,例如:“扩展名,文件名,文件路径等等。”
文件每5秒更新一次。
而且,为什么我们使用所有代码而不是简单的“File.getDirectoryListing()”?因为我们每5秒更新一次应用程序,如果为什么要使用getDirectoryListing(),我们的应用程序将占用更多内存,而且cmd命令要快得多......:)
如果您有更好的想法,请与我们分享!谢谢! :d
答案 2 :(得分:-1)
适用于Windows的1个出色解决方案:使用Visual Studio,构建此处的.net应用http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx 在Adobe AIR中,使用本机进程侦听.net
调度的更改事件