0

SDカードの指定したフォルダにあるファイルを表示するアプリケーションを作ろうとしていますlist.txtユーザーがファイルを選択したら、アプリでファイルを開いてその内容を読み取ってほしい。

拡張子.txtが付いたファイルのみを表示する方法はあります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 を拡張できます。これらは、View に入力するデータを含めるために使用されます。たくさんのコードがあるため、すべてのコードを掲載するつもりはありませんが、例を次に示します。必要なファイルの取得に関して、場所が 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

私はあなたがアンドロイドで作業していると思います
.1 - ディレクトリ内のすべてのファイルをフィルターで読み取り、.txt ファイルのみを許可します
.2 - ListView にリストを表示し
ます.3 - クリックすると、絶対ファイルパスをテキストファイルリーダー関数に送信します.

于 2013-02-27T07:53:28.317 に答える