【问题标题】:how to get the file names stored in sd card in android如何在android中获取存储在sd卡中的文件名
【发布时间】:2011-06-01 11:10:15
【问题描述】:


我在 SD 卡中有一个文件夹,其中包含多个文件。 现在我需要获取这些文件的名称。 有人知道如何获取存储在 sd 卡中的文件名吗?

任何帮助将不胜感激。 非常感谢。

【问题讨论】:

    标签: java android file sd-card


    【解决方案1】:

    Environment.getExternalStorageDirectory 会给你一个与 SDCARD 对应的File。然后你只需要使用File 方法。

    应该是这样的:

    File sdCardRoot = Environment.getExternalStorageDirectory();
    File yourDir = new File(sdCardRoot, "yourpath");
    for (File f : yourDir.listFiles()) {
        if (f.isFile())
            String name = f.getName();
            // make something with the name
    }
    

    一点建议:来自 KitKat 及更高版本,这需要READ_EXTERNAL_STORAGE 权限。

    【讨论】:

    • 你查过list()和listFiles()这两个方法的源码吗?它们之间有一点区别。有趣的是知道差异是什么。
    • @Martjin :在内部,listFiles 使用 list 创建文件名列表,并创建 File 对象。但由于 OP 只想拥有文件,我更喜欢使用 listFiles。
    • @ValentinRocher 如何获取文件路径? - 文件.getpath() ?还是有其他方法?
    • 你可能会使用 getCanonicalPath() 或类似的东西,看看 File javadoc
    【解决方案2】:

    在 Android 5.0 Lollipop 中,我发现我们需要在 Manifest 中添加权限:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    

    如果没有,我们在 sdcard 中看不到任何文件。我需要一个小时才能找到这个!

    【讨论】:

      【解决方案3】:

      如果您想从 FOLDER 的特定路径检索所有文件和文件夹,请使用此代码,它将帮助您

      String path="/mnt/sdcard/dcim";  //lets its your path to a FOLDER
      
      String root_sd = Environment.getExternalStorageDirectory().toString();
      File file = new File(path) ;       
      File list[] = file.listFiles();
        for(File f:list)
          {
             filename.add(f.getName());//add new files name in the list
           }              
      

      【讨论】:

        【解决方案4】:
         ArrayList<String>nameList = new ArrayList<String>();
         File yourDir = new File(Environment.getExternalStorageDirectory(), "/myFolder");
         for (File f : yourDir.listFiles()) 
         {
            if (f.isFile())
            {
               nameList.add(f.getName);
            }
        
        }
        

        【讨论】:

          【解决方案5】:
          /**
           * Return list of files from path. <FileName, FilePath>
           *
           * @param path - The path to directory with images
           * @return Files name and path all files in a directory, that have ext = "jpeg", "jpg","png", "bmp", "gif"  
           */
          private List<String> getListOfFiles(String path) {
          
              File files = new File(path);
          
              FileFilter filter = new FileFilter() {
          
                  private final List<String> exts = Arrays.asList("jpeg", "jpg",
                          "png", "bmp", "gif");
          
                  @Override
                  public boolean accept(File pathname) {
                      String ext;
                      String path = pathname.getPath();
                      ext = path.substring(path.lastIndexOf(".") + 1);
                      return exts.contains(ext);
                  }
              };
          
              final File [] filesFound = files.listFiles(filter);
              List<String> list = new ArrayList<String>();
              if (filesFound != null && filesFound.length > 0) {
                  for (File file : filesFound) {
                     list.add(file.getName());
                  }
              }
          
              return list;
          }
          

          这将为您提供文件夹中的图像列表。您可以修改代码以获取所有文件。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-07-31
            • 2012-03-13
            • 2011-05-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-03
            相关资源
            最近更新 更多