0

我正在尝试制作一个显示 sd 卡上指定文件夹中的文件的应用list程序.txt。当用户选择一个文件时,我希望应用程序打开它并读取它的内容。

.txt有没有办法只在 my上显示带有扩展名的文件list

这是我用来打开文件并在用户选择文件时读取文本的代码:

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
    {

    }
}

}

4

2 回答 2

1

您可能希望使用 ListView 或 GridView 来显示所有文件选项。无论哪种情况,您都可以使用 ArrayAdapter 或扩展 BaseAdapter,它们用于包含填充视图的数据。我不会发布所有代码,因为它很多,但这里有一个示例。关于获取您想要的文件,假设您的位置是 sdcard/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{
}

您可能不想使用确切的代码,但应该将您带到您需要到达的地方。

于 2013-02-28T05:21:31.450 回答
0

我猜您正在使用 android,
1 - 使用过滤器读取目录中的所有文件以仅允许 .txt 文件
2 - 在 ListView 上显示列表
3 - 单击时,将绝对文件路径发送到您的文本文件阅读器功能

于 2013-02-27T07:53:28.317 回答