Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取android目录中的所有文件名?_Java_Android - Fatal编程技术网

Java 如何获取android目录中的所有文件名?

Java 如何获取android目录中的所有文件名?,java,android,Java,Android,我试图列出我的android emulator的特定文件夹中的所有文件,但总是得到空答案 这是我的密码: File sdCardRoot = Environment.getExternalStorageDirectory(); File[] file= new File(sdCardRoot+"path"); for (File f : file.listFiles()) { if (f.isFile()) String name = f.getName(); } 这

我试图列出我的android emulator的特定文件夹中的所有文件,但总是得到空答案

这是我的密码:

File sdCardRoot = Environment.getExternalStorageDirectory();
File[] file= new File(sdCardRoot+"path");
for (File f : file.listFiles()) {
    if (f.isFile())
        String name = f.getName();

}
这似乎不起作用,不知道为什么。

改变

File[] file= new File(sdCardRoot+"path");


并确保目录
path
退出

我已将函数分为两部分,第一个函数获取给定路径中的所有文件,第二个函数从文件数组获取文件名

public File[] GetFiles(String DirectoryPath) {
    File f = new File(DirectoryPath);
    f.mkdirs();
    File[] file = f.listFiles();
    return file;
}

public ArrayList<String> getFileNames(File[] file){
    ArrayList<String> arrayFiles = new ArrayList<String>();
     if (file.length == 0)
            return null;
        else {
            for (int i=0; i<file.length; i++) 
                arrayFiles.add(file[i].getName());
        }

    return arrayFiles;
}
public File[]GetFiles(String DirectoryPath){
文件f=新文件(目录路径);
f、 mkdirs();
File[]File=f.listFiles();
返回文件;
}
公共ArrayList GetFileName(文件[]文件){
ArrayList arrayFiles=新的ArrayList();
如果(file.length==0)
返回null;
否则{
对于(int i=0;i只需检查以下内容:

  List<File> files = getListFiles(new File("YOUR ROOT")); 
  private List<File> getListFiles(File parentDir) {
      ArrayList<File> inFiles = new ArrayList<File>();
      File[] files = parentDir.listFiles();
      for (File file : files) {
          if (file.isDirectory()) {
          inFiles.addAll(getListFiles(file));
      } else {
          if(file.getName().endsWith(".csv")) {
              inFiles.add(file);
          }
      }
}

return inFiles;
List files=getListFiles(新文件(“您的根”);
私有列表getListFiles(文件parentDir){
ArrayList inFiles=新的ArrayList();
File[]files=parentDir.listFiles();
用于(文件:文件){
if(file.isDirectory()){
addAll(getListFiles(file));
}否则{
if(file.getName().endsWith(“.csv”)){
inFiles.add(文件);
}
}
}
返回填充;

由于
sdCardRoot
文件的实例
sdCardRoot+“path”
将返回与
sdCardRoot.toString()+“path”相同的内容

但是,调用
file.toString()
会返回文件名,但不会返回绝对路径。您需要调用
sdCardRoot.getAbsolutePath()+“path”


另外,请确保您已允许模拟器使用一定数量的内存进行外部存储。

如果您可以使用简单的
字符串
数组,为什么要使用arraylist?其实没有什么区别。因为他使用的是文件,所以他可能想在列表上执行更多操作,而使用arraylist则更容易。我总是更喜欢使用arraylist数组上的arraylist:)较短:公共arraylist GetFiles(字符串路径){arraylist f_arr=new arraylist();File f_path=new File(路径);File[]files=f_path.listFiles();for(File f:files)f_arr.add(f.getName());return f_arr;}。您必须使用
File.separator
。试试这个
文件[]文件=新文件(sdCardRoot+file.separator+路径)
您没有找到文件分隔符/因此结果字符串是/mnt/sdcardpath,而不是/mnt/sdcard/path。既然文件有一个带两个参数的构造函数,为什么不使用它呢?不,我把路径以“/”开头,我刚才在这里写了路径,以便于阅读。但是我明白了您的意思,将使用逗号。填充不应该是本地的易变的
  List<File> files = getListFiles(new File("YOUR ROOT")); 
  private List<File> getListFiles(File parentDir) {
      ArrayList<File> inFiles = new ArrayList<File>();
      File[] files = parentDir.listFiles();
      for (File file : files) {
          if (file.isDirectory()) {
          inFiles.addAll(getListFiles(file));
      } else {
          if(file.getName().endsWith(".csv")) {
              inFiles.add(file);
          }
      }
}

return inFiles;