Adobe AIR和不同的OS文件系统

nok*_*nal 6 air filesystems operating-system actionscript-3

另一个Adobe Air的问题,但首先是我的任务背景.它是一个AIR应用程序,它将从USB密钥读取资产,并且必须在WIN和MacOS上运行.问题是,如何在MacOS上将资源加载到应用程序中!听起来很简单,可以在Windows上无缝运行.

这是我想要做的代码片段:

            var loader:Loader = new Loader(); 
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ok);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);

            var p:String;

            if (os == "mac")
            {
                p = "/Volumes/" + keyVolume.rootDirectory.name + File.separator + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
            }
            else
            {
                p = keyVolume.rootDirectory.name + File.separator + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
            }

            var temp:File = new File(p);
            Debugger.Display.text += "\nAttempting to load: " + p;
            Debugger.Display.text += "\nDoes it exist? " + temp.exists;
            loader.load(new URLRequest(p));
Run Code Online (Sandbox Code Playgroud)

...变量OS和keyVolume正在早期代码中成功设置.此外,我还为ok()和ioErro()定义了事件监听器回调.

运行时,它会在Windows上打印出来:

试图加载:G:\ 0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
它是否存在:true

...然后成功加载资产.

在MacOS上,它打印出来:

试图加载:/Volumes/AC/0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
它是否存在:true

...然后每次都失败并出现IOError.

谁能看到我在这里失踪的东西?我是否有某种权限错误或某些内容(文件具有"读/写"访问权限).USB密钥格式化为MS-DOS FAT32,这可能是个问题吗?

编辑

我将MacOS中的新USB密钥格式化为FAT16并将文件放在上面但没有成功.问题仍然存在

编辑

我现在只是尝试从/ users/-USERNAME-/Desktop加载一个资产,但仍然收到相同的错误,所以看起来它只是USB棒上的权限问题,它比这更广泛.

编辑

问题解决了!我终于正确地说出了我的谷歌搜索,它揭示了答案.

这些更改将解决问题:

            var loader:Loader = new Loader(); 
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ok);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);

            var p:String = keyVolume.rootDirectory.nativePath + ((os == "mac") ? File.separator : "") + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
            var temp:File = new File(p);
            Debugger.Display.text += "\nAttempting to load: " + temp.url;
            Debugger.Display.text += "\nDoes it exist? " + temp.exists;
            loader.load(new URLRequest(temp.url));
Run Code Online (Sandbox Code Playgroud)

我还改进了涉及OS检测的逻辑语句.

我希望有人觉得这很有用!

nok*_*nal 1

问题解决了!我终于正确地表达了我的谷歌搜索,它揭示了答案

这些更改将解决该问题:

            var loader:Loader = new Loader(); 
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ok);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);

            var p:String = keyVolume.rootDirectory.nativePath + ((os == "mac") ? File.separator : "") + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
            var temp:File = new File(p);
            Debugger.Display.text += "\nAttempting to load: " + temp.url;
            Debugger.Display.text += "\nDoes it exist? " + temp.exists;
            loader.load(new URLRequest(temp.url));
Run Code Online (Sandbox Code Playgroud)

我还对涉及操作系统检测的逻辑语句进行了一些改进。

我希望有人觉得这很有用!