هل لا يعمل file.isfile و file.isdirectory بشكل صحيح في Appcelerator Titanium؟

StackOverflow https://stackoverflow.com/questions/4624767

  •  30-09-2019
  •  | 
  •  

سؤال

أنا أعمل على تطبيق iPad باستخدام AppCelarator Titanium وأحتاج إلى التكرار على محتوى الدليل وتحديد نوع العناصر الموجودة ، سواء كان ملفًا أو دليلًا.

هذا ما لدي حتى الآن:

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 لا يعملان بشكل صحيح ، أم فاتني شيء؟ هل يعاني أي شخص آخر من نفس المشكلة؟

شكرا على أي نصيحة!

هل كانت مفيدة؟

المحلول

ما يلي يجب أن يعمل:

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

var isFile = function(f){
    return f.exists() && f.getDirectoryListing() == null;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top