Cordova - FileSystem - 为什么有这么多路径选择?

时间:2014-05-15 10:41:50

标签: cordova html5-filesystem cordova-plugins

我只是查看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.fullPathfile.nativeURL之间有什么区别 - 它们完全相同?它们都是文件对象的属性 - 都可以公开访问。

据我所知,file.toURL()使用了这两种方法 - 首先是file.nativeURL,如果没有,那么file.toInternalURL()或失败,然后是file.fullPath

最后,file.toNativeURL()会返回cdvfile://格式化的位置。

因此,大多数方法都指向file.nativeURL属性。 file.toURL()是否使用方法,因为它处理所有实例?如果是这样,那么究竟是cdvfile://

由于

1 个答案:

答案 0 :(得分:8)

file.fullPath是规范的一部分,实际上应该是:/path/relative/to/my/root。如果你发现它有file:///,那就是一个错误。

file.nativeURL是一个实现细节。但遗憾的是,它并没有明显的标记。它不是规范的一部分,也不存在于其他平台上。

file.toURL()可能就是你想要的。它是规范的一部分,为您提供了一个可以传递给resolveLocalFileSystemURL的网址,与cdvfile:网址相比,其网址较少。

file.toInternalURL()不是规范的一部分,但它是特定于Cordova的扩展。我不认为使用它会是一件有用的事情。