在Android中用户选择动态读取文本文件

时间:2011-04-11 17:14:15

标签: java android android-emulator

我正在构建一个读取文本文件的android应用程序。 现在,我在SD卡中有多个文本文件。 文件的位置是/ sdcard / textfile /
文件名:abc.txt def.txt ghi.txt

我希望当用户选择任何一个文件时,应该读取所​​选文件。 我知道读取单个文件的代码 即

File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,pathtofile);
 BufferedReader br = new BufferedReader(new FileReader(file));

pathtofile存储定义的文件abc.txt的路径。

有没有办法可以将文件路径传递给用户选择的文件的文件对象 目前,它适用于abc.txt,因为我在pathtofile中定义了它的路径

2 个答案:

答案 0 :(得分:0)

您可以将AlertDialog与列表一起使用。

final CharSequence[] items = {"abc.txt", "def.txt", "ghi.txt"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a file");
builder.setItems(items, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
        //Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();

        File sdcard = Environment.getExternalStorageDirectory();
        File file = new File(sdcard,items[item]);
        BufferedReader br = new BufferedReader(new FileReader(file));
    }
});
AlertDialog alert = builder.create();

答案 1 :(得分:0)

您还可以列出textfile文件夹中的所有项目,并将其保存在用户可以选择的列表中。

public class DirectoryBrowser extends ListActivity {

private List<String> items = null;
private File currentDirectory;
private ArrayAdapter<String> fileList;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    currentDirectory = new File("/sdcard/textfile");
    getFiles(currentDirectory.listFiles());

}

@Override
protected void onListItemClick(ListView l, View v, int position, long id){
    int selectedRow = (int)id;

        currentDirectory = new File(items.get(selectedRow));
        if(currentDirectory.isDirectory()){
            getFiles(currentDirectory.listFiles());
        }else{
            //if the selected file is not a directory. get the filename
            currentDirectory.getPath();
        }
}

private void getFiles(File[] files){
    items = new ArrayList<String>();
    for(File file : files){
        items.add(file.getPath());
    }
    fileList = new ArrayAdapter<String>(this,R.layout.list_text, items);
    setListAdapter(fileList);
}


}