如何使用 Appcelerator/Titanium 正确重命名和移动文件?
How to properly rename and move files with Appcelerator/Titanium?
当用户拍照时,文件存储在tempDirectory 文件夹中。该文件被重命名并移动到 appImages 文件夹(在 applicationDataDirectory 中)。这 http://docs.appcelerator.com/platform/latest/#!/guide/Filesystem_Access_and_Storage 很有帮助。
下面的代码完全适用于 Android,但对于 iOS,文件仅被重命名,而没有被移动。有任何想法吗?
var fs = Ti.Filesystem;
var imageDir = fs.getFile(fs.applicationDataDirectory,'appImages');
if (! imageDir.exists()) {
imageDir.createDirectory();
}
var tempFile = fs.getFile(fs.tempDirectory,timeStamp + "_" + registeredUserID + "_nomination.jpg");
tempFile.rename(nid + "_" + registeredUserID + "_nomination.jpg"); //renames nomination image
tempFile = fs.getFile(fs.tempDirectory,nid + "_" + registeredUserID + "_nomination.jpg"); //gets the new handler
tempFile.move("appImages/" + nid + "_" + registeredUserID + "_nomination.jpg"); //moves nomination image
var tempListAfter = Ti.Filesystem.getFile(Ti.Filesystem.tempDirectory).getDirectoryListing();
Ti.API.info("tempListAfter AFTER moving: " + JSON.stringify(tempListAfter));
var appImagesListAfter = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory,'appImages').getDirectoryListing();
Ti.API.info("appImagesListAfter AFTER moving: " + JSON.stringify(appImagesListAfter)); //iOS results an empty array, but works in Android and shows the properly named files in Android
tempFile = tempThumbFile = null;
解决方案 基于 Mituls 的建议:
tempFile.move(imageDir.nativePath + nid + "_" + registeredUserID + "_nomination.jpg");
我认为你应该像
那样使用imageDir.nativePath移动临时文件
tempFile.move(imageDir.nativePath);
当用户拍照时,文件存储在tempDirectory 文件夹中。该文件被重命名并移动到 appImages 文件夹(在 applicationDataDirectory 中)。这 http://docs.appcelerator.com/platform/latest/#!/guide/Filesystem_Access_and_Storage 很有帮助。
下面的代码完全适用于 Android,但对于 iOS,文件仅被重命名,而没有被移动。有任何想法吗?
var fs = Ti.Filesystem;
var imageDir = fs.getFile(fs.applicationDataDirectory,'appImages');
if (! imageDir.exists()) {
imageDir.createDirectory();
}
var tempFile = fs.getFile(fs.tempDirectory,timeStamp + "_" + registeredUserID + "_nomination.jpg");
tempFile.rename(nid + "_" + registeredUserID + "_nomination.jpg"); //renames nomination image
tempFile = fs.getFile(fs.tempDirectory,nid + "_" + registeredUserID + "_nomination.jpg"); //gets the new handler
tempFile.move("appImages/" + nid + "_" + registeredUserID + "_nomination.jpg"); //moves nomination image
var tempListAfter = Ti.Filesystem.getFile(Ti.Filesystem.tempDirectory).getDirectoryListing();
Ti.API.info("tempListAfter AFTER moving: " + JSON.stringify(tempListAfter));
var appImagesListAfter = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory,'appImages').getDirectoryListing();
Ti.API.info("appImagesListAfter AFTER moving: " + JSON.stringify(appImagesListAfter)); //iOS results an empty array, but works in Android and shows the properly named files in Android
tempFile = tempThumbFile = null;
解决方案 基于 Mituls 的建议:
tempFile.move(imageDir.nativePath + nid + "_" + registeredUserID + "_nomination.jpg");
我认为你应该像
那样使用imageDir.nativePath移动临时文件tempFile.move(imageDir.nativePath);