我正在构建一个读取文本文件的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中定义了它的路径
答案 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);
}
}