2010-12-18 26 views
1

我一直在試圖使通過目錄進入,並列出目錄中的所有文件和所有子目錄的功能:VALA FileInfo的get_file_type是未知

void get_listing (string dir) { 
    try { 
     var directory = File.new_for_path (dir); 

     var enumerator = directory.enumerate_children (FILE_ATTRIBUTE_STANDARD_NAME, 0); 

     FileInfo file_info; 
     while ((file_info = enumerator.next_file()) != null) { 
      stdout.printf(file_info.get_file_type().to_string()); 
      if (file_info.get_file_type() == FileType.DIRECTORY) { 
       get_listing(file_info.get_name()); 
      } else { 
       stdout.printf ("%s\n", file_info.get_name()); 
      } 
     } 

    } catch (Error e) { 
     stderr.printf ("Error: %s\n", e.message); 
     return; 
    } 
} 
int main (string[] args) { 
    get_listing("."); 

    return 0; 
} 

當我運行這段代碼沒有任何的輸出任何子目錄中的文件。所有的文件/目錄類型都是「G_FILE_TYPE_UNKNOWN」。有誰知道如何解決這個或我可以使用的另一種方法。

回答

3

您只按名稱列舉文件;如果您希望稍後訪問文件類型,則應通過適當的提示給枚舉員:

FILE_ATTRIBUTE_STANDARD_NAME + "," + FILE_ATTRIBUTE_STANDARD_TYPE