File.isFile 和 File.isDirectory 在 Appcelerator Titanium 中是否无法正常工作?

发布于 2024-10-10 19:32:30 字数 1103 浏览 3 评论 0原文

我正在使用 appcelator titan 开发一个 iPad 应用程序,需要迭代目录的内容并确定所包含项目的类型,无论是文件还是目录。

这就是我到目前为止所拥有的:

dirFullPath = '/full/path/to/directory';
var dir = Titanium.Filesystem.getFile(dirFullPath);
var dirItems = dir.getDirectoryListing();
for ( var i=0; i<dir.length; i++ ) {
    itemFullPath = dirFullPath
                 + Titanium.Filesystem.getSeparator()
                 + dir[i].toString();
    testItem = Titanium.Filesystem.getFile(itemFullPath);
    if ( testItem.exists() ) {
        alert(itemFullPath + ' exists.');             // item exists, alert box appears
        if ( testItem.isDirectory ) {            
            alert(itemFullPath + ' is a directory.'); // this code is never executed
        }
        else if ( testItem.isFile ) {
            alert(itemFullPath + ' is a file.');      // this code is never executed
        }
        else {
            alert(itemFullPath + ' is an unknown object.'); // this alert is always shown
        }
    }
}

我总是收到警告框,提示“是一个未知对象。”。看来 isFile 和 isDirectory 无法正常工作,或者我错过了什么?还有其他人有同样的问题吗?

感谢您的任何建议!

I am working on an iPad app using appcelarator titanium and need to iterate over the content of a directory and determine the type of the contained items, whether it is a file or directory.

This is what I have so far:

dirFullPath = '/full/path/to/directory';
var dir = Titanium.Filesystem.getFile(dirFullPath);
var dirItems = dir.getDirectoryListing();
for ( var i=0; i<dir.length; i++ ) {
    itemFullPath = dirFullPath
                 + Titanium.Filesystem.getSeparator()
                 + dir[i].toString();
    testItem = Titanium.Filesystem.getFile(itemFullPath);
    if ( testItem.exists() ) {
        alert(itemFullPath + ' exists.');             // item exists, alert box appears
        if ( testItem.isDirectory ) {            
            alert(itemFullPath + ' is a directory.'); // this code is never executed
        }
        else if ( testItem.isFile ) {
            alert(itemFullPath + ' is a file.');      // this code is never executed
        }
        else {
            alert(itemFullPath + ' is an unknown object.'); // this alert is always shown
        }
    }
}

I always get the alert box saying " is an unknown object.". It seems, that isFile and isDirectory are not working properly, or did I miss something? Does anybody else had the same problem?

Thanks for any advice!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

栖迟 2024-10-17 19:32:30

以下应该有效:

var isDirectory = function(f){
    return f.exists() && f.getDirectoryListing() != null;
}

var isFile = function(f){
    return f.exists() && f.getDirectoryListing() == null;
}

The following should work:

var isDirectory = function(f){
    return f.exists() && f.getDirectoryListing() != null;
}

var isFile = function(f){
    return f.exists() && f.getDirectoryListing() == null;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文