Appcelerator - 文件存储失败

Appcelerator - File storage fail

我复制了一个视频到/Documents/videos/xxxxxx.mp4,然后,当我关闭应用程序并重新启动它时,当我想要获取文件时出现这个错误:

nativeReason = "Could not open file stream for file at path: /var/mobile/Containers/Data/Application/055CE45C-28EC-46F5-9609-F16E357B682E/Documents/videos/1458044667778.mp4\nFile does not exist at path /var/mobile/Containers/Data/Application/055CE45C-28EC-46F5-9609-F16E357B682E/Documents/videos/1458044667778.mp4";

但是我可以在目录中看到这个文件:

有什么问题吗??这发生在 iOS、Ti.SDK 5.2.0.GA

我的代码:

            if(OS_IOS){
                Ti.API.debug("Media: " + this.get("media").nativePath);
                var infile = Ti.Filesystem.getFile(this.get("media").nativePath); //!
            }else{
                var infile = Ti.Filesystem.getFile(this.get("media"));
            }
            Ti.API.debug('infile: ' + infile.exists());

            var tempFile = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, "videos/");

            if(!tempFile.exists())
                tempFile.createDirectory(); //create videos directory

            var tempFile = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, "videos/" + new Date().getTime() + ".mp4");
            Ti.API.debug('tempFile ' + tempFile.exists()); // tempsFile is always empty

            if(OS_IOS){

                if (infile.exists() && (!tempFile.exists()) ) { //copy infile to videos/
                    tempFile.write(infile.read());
                }

            }else{ //Android

                infile.copy(tempFile.nativePath); //copy infile to videos/
            }   

//Get video, the path saved is correct
    var vid = Ti.Filesystem.getFile(video.get("videoFile"));

默认情况下 Ti.Filesystem.getFile() 所有相对路径当前都被解释为相对于资源目录,而不是当前上下文。这是一个已知问题,将在未来版本中解决。 : http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Filesystem-method-getFile

因此,您需要将视频文件名保存在video.get("videoFile")中,并通过这种方式获取视频:Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, "videos/"+video.get("videoFile"));