【问题标题】:Read multiple txt files and sort them out android读取多个txt文件并整理出android
【发布时间】:2012-02-27 13:59:38
【问题描述】:

我遇到了一个小问题。 我有一个名为“保存”的地图(在安卓手机上),在那个文件夹中我有几个 .txt 文件。

我知道如何进入文件夹,我可以读取 1 个 txt 文件(硬编码),但我希望它是动态的。

我想要这样的东西:

public void onClick(View v) {

             File root = Environment.getExternalStorageDirectory();

             save = root.toString()+"/Save/";

                if (save.startsWith("3_test")){
                    System.out.println("FOUND!");
                } else {
                    System.out.println("NOT FOUND!");
                }

        }

我有一个名为 3_test.txt 的 txt 文件,但他无法通过这种方式找到它,如果我硬编码它确实会找到它。

问题是我不知道如何“扫描”文件夹 Save 中的所有文件,然后对其进行“if”检查。

希望有人可以帮助我。

【问题讨论】:

    标签: java android file find storage


    【解决方案1】:

    我认为您的代码也无法在 Java 中运行:您的 save 变量包含文件夹 Save 的路径,位于 de root 文件夹下。 要实现过滤的目录列表,您可以尝试使用 Save 文件夹的 File 对象上的 list() 方法,传递自定义的java.io.FilenameFilter 实现,因此它将扫描目标文件夹的全部内容,并仅返回名称符合您的约束的文件:

     public void onClick(View v) {
    
             File root = Environment.getExternalStorageDirectory();
             File saveFolder= new File(root, "Save");
    
             String[] files=saveFolder.list(
                new FilenameFilter() {
                    public boolean accept(File dir, String name) {
                    //define here you filter condition for every single file
                        return name.startsWith("3_test");
    
                    }
                });
    
             if(files.length>0) {
                 System.out.println("FOUND!");
             } else {
                 System.out.println("NOT FOUND!");
             }
         }
    

    【讨论】:

      【解决方案2】:

      save 设为File 而不是愚蠢的String,然后您可以在其上调用listFiles(),它会返回目录中Files 的数组。然后您可以遍历数组。

      File save = new File(root, "Save");
      
      for (File f : save.listFiles()) {
          // check each file
          if (f.getName().startWith("3_test.txt") {
              // whatever
          }
      }
      

      【讨论】:

        【解决方案3】:

        使用listFiles()获取任意目录下的所有子文件,使用file.getName()获取文件名。

        示例

        String folderName = Environment.getExternalStorageDirectory().getAbsolutePath();
            String folderNameStr = "Save";
            File destDir = new File(folderName+"/"+folderNameStr);
            File[] childFiles =destDir.listFiles();
            String childFileName = null;
            for(File child: childFiles){
                childFileName = child.getName();
                if(!childFileName.equals("3_test")){
                    // do your task
                }
                System.out.println(childFileName);
            }
        

        【讨论】:

          猜你喜欢
          • 2021-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-11
          • 2023-03-22
          • 1970-01-01
          • 2013-07-17
          • 2018-07-22
          相关资源
          最近更新 更多