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

kel*_*dar 8 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();
Run Code Online (Sandbox Code Playgroud)

我理解两个都被弃用 - 这两个都指向file.toURL()- 所以我可以忽略它们并专注于四种方法.

但是file.fullPathfile.nativeURL它们之间有什么区别- 它们完全相同?它们都是文件对象的属性 - 都可以公开访问.

据我所知,file.toURL()使用这两种方法 - 首先file.nativeURL如果不是那样,那么file.toInternalURL()或者那么失败file.fullPath.

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

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

谢谢

小智 9

file.fullPath是规范的一部分,实际上应该是这样的:/path/relative/to/my/root.如果你看到它有file:///,那就是一个bug.

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

file.toURL()很可能是你想要的.它是规范的一部分,为您提供了一个可以传递给的URL resolveLocalFileSystemURL,并且与cdvfile:URL 相比具有更少的陷阱.

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