Android 如何仅浏览应用程序中的文本文件
我已经建立了一个应用程序,我应该只浏览设备中的txt文件并读取它。但是我没有得到一个有效的解决方案。例如,如果我们使用whatsapp,在那里,你可以浏览不同标题下的不同文件,比如在“视频”下,你只能浏览视频,在“多媒体资料”下,你只能浏览图像。但是,如果只浏览文本文件,又该怎么办呢?有什么办法吗?请提出建议。我会将你的目录放入数组中进行搜索。。。循环数组并查找“Android 如何仅浏览应用程序中的文本文件,android,Android,我已经建立了一个应用程序,我应该只浏览设备中的txt文件并读取它。但是我没有得到一个有效的解决方案。例如,如果我们使用whatsapp,在那里,你可以浏览不同标题下的不同文件,比如在“视频”下,你只能浏览视频,在“多媒体资料”下,你只能浏览图像。但是,如果只浏览文本文件,又该怎么办呢?有什么办法吗?请提出建议。我会将你的目录放入数组中进行搜索。。。循环数组并查找“”后面的文件扩展名,如果不是文本扩展名,请将其删除。然后向用户显示新阵列,就像照片库一样,或者以其他方式显示它们。 注意-如果您以后需
”后面的文件扩展名,如果不是文本扩展名,请将其删除。然后向用户显示新阵列,就像照片库一样,或者以其他方式显示它们。
注意-如果您以后需要访问这些,如果用户说…需要单击并打开它们,您可能希望保存路径
您可以使用类似的方法来搜索SD卡
File file[] = Environment.getExternalStorageDirectory().listFiles();
file[i].getAbsolutePath();
然后搜索您想要的扩展名…这将为您提供一个您喜欢的文件管理器。只是需要一点变通。但肯定有帮助
//fill method is to get the dir
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
{
String filetype[] = objOption.getName().split("\\.");
if (filetype[(filetype.length) - 1].equals("txt")) {
fls.add(new Option(ff.getName(), "File Size: "+ ff.length()+" bytes", ff.getAbsolutePath()));
}
}
}
}
catch (Exception e)
{}
Collections.sort(dir);
Collections.sort(fls);
dir.addAll(fls);
if (!f.getName().equalsIgnoreCase("sdcard"))
{
dir.add(0, new Option("..", "Parent Directory", f.getParent()));
}
adapter = new FileArrayAdapter(FileChooser.this, R.layout.dialog_file_view,dir);
lvFileList.setAdapter(adapter);
}
//fill方法用于获取目录
专用空白填充(文件f)
{
File[]dirs=f.listFiles();
这个.setTitle(“当前目录:+f.getName());
List dir=new ArrayList();
List fls=new ArrayList();
尝试
{
用于(文件ff:dirs)
{
if(ff.isDirectory())
{
添加目录(新选项(ff.getName(),“Folder”,ff.getAbsolutePath());
}
其他的
{
字符串文件类型[]=objOption.getName().split(“\\”);
如果(filetype[(filetype.length)-1].equals(“txt”){
fls.add(新选项(ff.getName(),“文件大小:”+ff.length()+“bytes”,ff.getAbsolutePath());
}
}
}
}
捕获(例外e)
{}
集合排序(dir);
集合。排序(fls);
addAll主任(fls);
如果(!f.getName().equalsIgnoreCase(“SD卡”))
{
dir.add(0,新选项(“…”,“父目录”,f.getParent());
}
adapter=newfilearrayadapter(FileChooser.this,R.layout.dialog\u file\u view,dir);
lvFileList.setAdapter(适配器);
}
为此,您必须编写自己的过滤器,也就是说,您必须检查扩展名为.txt的每个文件,然后只有您需要显示。我认为,此链接可能会对您有所帮助,例如(文件wavfile:f.listFiles(新文件扩展名过滤器())在这行中,我想检查您的xml文件,并将清单文件添加到写入文件的权限外部存储中。这是您的xml文件错误。您正在访问主活动中不需要的元素。实际上,您希望在哪个文件夹中访问内部存储或外部???@Sethu..,它可以工作,但它正在给输出写操作,y so。。??这段代码的输出将给出SD卡相应目录的文件名。
try this.
//for example your folder present in sdcard/cts.
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/cts");
for (File wavfile : f.listFiles(new FileExtensionFilter()))
{
String str = wavfile.getName().toString();
}
//create a class and the filter based on your need file extension
class FileExtensionFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".txt") || name.endsWith(".TXT") );
}
}
thank you.