我只是查看Cordova源代码以尝试解决问题,目前有六个备用方法/属性来访问文件路径。
目前(使用iOS运行),有:
// Properties
file.fullPath; // file:///full/path/syntax/file
file.nativeURL; // file:///full/path/syntax/file
// Method(s)
file.toInternalURL(); // formats the file.fullPath into a cdvfile://localhost/persisten/file.
file.toURL(); // if file.nativeURL is set, uses file.nativeURL, otherwise use file.toInternalURL() or file.fullPath.
// Deprecated method(s)
file.toURI(); // deprecated - calls file.toURL();
file.toNativeURL() // deprecated - calls file.toURL();
我知道有两个被弃用 - 它们都指向file.toURL()
- 因此我可以忽略它们并专注于四种方法。
但是file.fullPath
和file.nativeURL
之间有什么区别 - 它们完全相同?它们都是文件对象的属性 - 都可以公开访问。
据我所知,file.toURL()
使用了这两种方法 - 首先是file.nativeURL
,如果没有,那么file.toInternalURL()
或失败,然后是file.fullPath
。
最后,file.toNativeURL()
会返回cdvfile://
格式化的位置。
因此,大多数方法都指向file.nativeURL
属性。 file.toURL()
是否使用方法,因为它处理所有实例?如果是这样,那么究竟是cdvfile://
?
由于
答案 0 :(得分:8)
file.fullPath
是规范的一部分,实际上应该是:/path/relative/to/my/root
。如果你发现它有file:///
,那就是一个错误。
file.nativeURL
是一个实现细节。但遗憾的是,它并没有明显的标记。它不是规范的一部分,也不存在于其他平台上。
file.toURL()
可能就是你想要的。它是规范的一部分,为您提供了一个可以传递给resolveLocalFileSystemURL
的网址,与cdvfile:
网址相比,其网址较少。
file.toInternalURL()
不是规范的一部分,但它是特定于Cordova的扩展。我不认为使用它会是一件有用的事情。