【问题标题】:Filter .xml file in the File Explorer在文件资源管理器中过滤 .xml 文件
【发布时间】:2013-03-24 23:57:03
【问题描述】:

我只想向用户显示当前存在于 sd 卡中的 .xml 文件。我尝试以下操作,但它显示了我的 sd 卡中的所有文件,包括目录

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("text/xml");
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    startActivityForResult(Intent.createChooser(intent, "Select XML File"), SelectXMLFILE);

【问题讨论】:

标签: android xml file filtering


【解决方案1】:

我有三星 Galaxy s3 和 android 4.1.2。我的手机内部存储器名为 sdcard0,外部卡名为 extSdCard。

 Environment.getExternalStorageDirectory()

所以上面返回的是sdcard0的路径,即手机内存

在这种情况下,您可以使用以下获取实际路径

String externalpath = new String();
String internalpath = new String();

public  void getExternalMounts() {
Runtime runtime = Runtime.getRuntime();
try  
{
Process proc = runtime.exec("mount");
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
String line;
BufferedReader br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
if (line.contains("secure")) continue;
if (line.contains("asec")) continue;

if (line.contains("fat")) {//external card
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
    externalpath = externalpath.concat("*" + columns[1] + "\n");
}
} 
else if (line.contains("fuse")) {//internal storage
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
    internalpath = internalpath.concat(columns[1] + "\n");
}
}
}
}
catch(Exception e)
{
 e.printStackTrace();
}
 System.out.println("Path  of sd card external............"+externalpath);
 System.out.println("Path  of internal memory............"+internalpath); 
}

一旦你得到了路径。

File dir= new File(android.os.Environment.getExternalStorageDirectory());
//Instead of android.os.Environment.getExternalStorageDirectory() you can use internalpath or externalpath

然后调用

walkdir(dir);

ArrayList<String> filepath= new ArrayList<String>();//contains list of all files ending with .xml

public void walkdir(File dir) {
String xmlPattern = ".xml";

File listFile[] = dir.listFiles();

if (listFile != null) {
for (int i = 0; i < listFile.length; i++) {

    if (listFile[i].isDirectory()) {
        walkdir(listFile[i]);
    } else {
      if (listFile[i].getName().endsWith(xmlPattern)){
          //Do what ever u want
          filepath.add( listFile[i].getAbsolutePath());
       }
     }
    }
   }    
  }

【讨论】:

  • @user2240031 你试过以上方法了吗?
【解决方案2】:

使用以下代码并根据您的需要进行操作

File sdcardPath = new File(Environment.getExternalStorageDirectory().getPath() +"/SomeFolder");

List<String> list;
list = new ArrayList<String>();
list=sdcardPath.listFiles();

现在遍历列表并检查每个文件名并应用 endWith("xml");项目上的功能以获取所有 xml 文件。希望它有效。

这样循环

List<String> XMLFiles= new ArrayList<String>();
for(int i=0; i<=list.size(); i++)
{
   XMLFiles.add(list.get(i).endsWith("xml"));

}

【讨论】:

    猜你喜欢
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 2010-12-30
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多