2014-05-15 14 views
5

Tôi chỉ xem xét mã nguồn Cordova để thử và tìm ra thứ gì đó, và hiện tại có sáu các phương thức/thuộc tính thay thế để truy cập đường dẫn của tệp.Cordova - FileSystem - tại sao có nhiều lựa chọn thay thế đường dẫn?

Hiện nay (chạy sử dụng iOS), có:

// 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(); 

Tôi hiểu hai đang bị phản đối - mà cả hai điểm đến file.toURL() - vì vậy tôi có thể bỏ qua chúng và chỉ tập trung vào bốn phương pháp.

Nhưng sự khác nhau giữa file.fullPathfile.nativeURL - chúng giống hệt nhau? Cả hai thuộc tính trên đối tượng tệp - đều có thể truy cập công khai.

Theo như tôi có thể nói, file.toURL() sử dụng cả hai - lần đầu tiên file.nativeURL nếu không muốn nói rằng, sau đó file.toInternalURL() hoặc không, sau đó file.fullPath.

Cuối cùng, file.toNativeURL() trả về một vị trí được định dạng cdvfile://.

Vì vậy, hầu hết các phương pháp đều trỏ đến thuộc tính file.nativeURL. Có phải phương thức sử dụng file.toURL() vì nó xử lý tất cả các phiên bản không? Nếu có, thì cái gì trên trái đất là cdvfile://?

Cảm ơn

Trả lời

6

file.fullPath là một phần của spec, và thực sự sẽ giống như thế: /path/relative/to/my/root. Nếu bạn thấy rằng nó có file:///, thì đó là một lỗi.

file.nativeURL có nghĩa là chi tiết triển khai. Nhưng thật đáng buồn, nó không được đánh dấu rõ ràng như vậy. Nó không phải là một phần của spec, và không tồn tại trên các nền tảng khác.

file.toURL() có thể là những gì bạn muốn. Đó là một phần của thông số, cung cấp cho bạn URL có thể được chuyển đến resolveLocalFileSystemURL và có ít địa chỉ hơn so với cdvfile: URL.

file.toInternalURL() không phải là một phần của thông số kỹ thuật mà là một phần mở rộng cụ thể của Cordova. Tôi không nghĩ rằng nó sẽ là một điều hữu ích để sử dụng.

+0

Cảm ơn Andrew - khi được viết, tôi đã sử dụng Cordova 3.3.0; Tôi chưa nâng cấp nhưng tôi sẽ thực hiện và xác nhận xem đây có phải là trường hợp của iOS hay không. – keldar

Các vấn đề liên quan