2013-04-08 34 views
0

我想只列出一個文件夾中的.db文件並將它們連接到一個數據庫文件..在這個時候我只能列出我的文件夾中的所有文件......可以一個幫助我如何過濾.db文件?然後最好的方式來加入這個數據庫文件在一個文件中? 這裏是我的代碼在Android的文件夾中列出spasial文件類型

public List<String> directoryPath(File path) { 
    List<String> item = null; 
    if(path.exists() && path.isDirectory()) { 
     File[] files = path.listFiles(new FilenameFilter(){ 
       public boolean accept(File dir, String filename) { 
        return filename.endsWith(".db");  
       } 
      }); 
     for(int i=0; i < files.length; i++) 

     { 

      File file = files[i]; 

      item.add(file); 

     } 


    } 
    return item; 
} 

我修改了代碼,現在我得到item空ponter訪問可以有人幫助我緊靠呢?爲什麼我得到這個錯誤? 我把這個代碼用這種方式

File path=new File(ClubCP.SDcardPath); 
    Log.i("database_list","call list files"); 
    List<String> file_lists = main.directoryPath(path); 
    Log.i("database_list","list adapter"); 
    ListView Database_list=(ListView)findViewById(R.id.database_list); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
      this, 
      android.R.layout.simple_spinner_item, 
      file_lists); 
    Database_list.setAdapter(adapter); 

回答

2

您實現FileFilter(或FilenameFilter)接口,並通過該對象到File.listFiles(File[name]Filter)方法。

public void directoryPath(File path) { 
    if(path.exists() && path.isDirectory()) { 
     File[] files = path.listFiles(new FilenameFilter(){ 
       public boolean accept(File dir, String filename) { 
        return filename.endsWith(".db");  
       } 
      }); 
     // files only contains files that end with .db 
    } 
} 

要合併數據庫文件,您並不是真的在正確的軌道上。您不能只將一個數據庫文件附加到另一個數據庫的末尾。你必須使用sql實際加載一個文件,然後在sql中複製這些表。 How can I merge many sqlite databases?

+0

非常感謝,但現在我有一個問題..如果我想填充這個列表的文件列表視圖我需要返回結果在int格式的權利?我將文件[]轉換爲int? – Majid 2013-04-08 08:24:34

+0

關於數據庫我也搜索過,我發現我必須使用attach方法來連接數據庫文件,用戶被選中..我想我必須使用循環來做到這一點? – Majid 2013-04-08 08:26:35

1

檢查,如果文件[I] .getName()的endsWith( 「DB」)

+0

感謝我的朋友我明白了:) – Majid 2013-04-08 08:27:01

相關問題