Android 如何仅浏览应用程序中的文本文件

Android 如何仅浏览应用程序中的文本文件,android,Android,我已经建立了一个应用程序,我应该只浏览设备中的txt文件并读取它。但是我没有得到一个有效的解决方案。例如,如果我们使用whatsapp,在那里,你可以浏览不同标题下的不同文件,比如在“视频”下,你只能浏览视频,在“多媒体资料”下,你只能浏览图像。但是,如果只浏览文本文件,又该怎么办呢?有什么办法吗?请提出建议。我会将你的目录放入数组中进行搜索。。。循环数组并查找“”后面的文件扩展名,如果不是文本扩展名,请将其删除。然后向用户显示新阵列,就像照片库一样,或者以其他方式显示它们。 注意-如果您以后需

我已经建立了一个应用程序,我应该只浏览设备中的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.