2013-02-27 85 views
0

我試圖製作一個應用程序,顯示位於sd卡上指定文件夾中的list.txt文件。當用戶選擇一個文件時,我希望應用程序打開它並閱讀它的內容。點擊文件時如何從sd列表中讀取txt文件? Android

有沒有在我的list上顯示擴展名爲.txt的文件的方法?

這是我用來打開文件和文字的代碼,當用戶選擇一個文件:

public class TxtView extends ListActivity { 

private File currentDir; 
private FileArrayAdapter adapter; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    currentDir = new File("/sdcard/Txt"); 
    fill(currentDir); 
} 

private void fill(File f) 
{ 
    File[]dirs = f.listFiles(); 
    this.setTitle("Current Dir: "+f.getName()); 

    List<Option>dir = new ArrayList<Option>(); 
    List<Option>fls = new ArrayList<Option>(); 
    try{ 
     for(File ff: dirs) 
     { 
      if(ff.isDirectory()) 
       dir.add(new Option(ff.getName(),"Folder",ff.getAbsolutePath())); 
      else 
      { 
       fls.add(new Option(ff.getName(),"File Size: "+ff.length(),ff.getAbsolutePath())); 
      } 
     } 
    }catch(Exception e) 
    { 

    } 
    Collections.sort(dir); 
    Collections.sort(fls); 
    dir.addAll(fls); 
    if(!f.getName().equalsIgnoreCase("Txt")) 
     dir.add(0,new Option("..","Parent Directory",f.getParent())); 
    adapter = new FileArrayAdapter(TxtView.this,R.layout.file_view,dir); 
    this.setListAdapter(adapter); 
} 
@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    // TODO Auto-generated method stub 
    super.onListItemClick(l, v, position, id); 
    Option o = adapter.getItem(position); 
    if(o.getData().equalsIgnoreCase("folder")||o.getData().equalsIgnoreCase("parent directory")){ 
      currentDir = new File(o.getPath()); 
      fill(currentDir); 
    } 
    else 
    { 

    } 
} 

}

回答

1

您可能希望使用ListView或GridView來顯示所有文件選項。無論哪種情況,您都可以使用ArrayAdapter或擴展BaseAdapter,它們用於包含填充View的數據。我不會發布所有的代碼,因爲它很多,但是here is an example。對於得到你想要的文件,假設你的位置是SD卡/ yourdir比:

String path = Environment.getExternalStorageDirectory()+"/yourdir/"; 
File f = new File(path); 
ArrayList<String> allTxtFiles = new ArrayList<String>(); 
try{ 
    for(File tmp : files.listFiles()){ 
    if(tmp.toString().matches(".*\\.txt")) 
     allTextFiles.add(path+tmp.toString()); 
    } 
}catch{ 
} 

你可能不希望使用確切的代碼,但應該讓你的地方,你需要得到。

+0

謝謝,我會開始練習你給我的東西,看看我能得到什麼,直到現在我可以編輯代碼,我的互聯網斷開了。感謝您的關注和幫助。 – 2013-02-28 05:49:03

0

我猜你是工作在Android上,
1 - 使用過濾器讀取目錄中的所有文件以僅允許.txt文件
2 - 在ListView上顯示列表
3 - 單擊,將絕對文件路徑發送到文本文件讀取器功能

+0

感謝您的幫助,我已經能夠顯示文件列表,但我無法實現過濾器。我不知道我不能放過濾器,我修改了代碼,這就是我現在的代碼。謝謝 – 2013-02-28 05:10:11