如何从java中的while循环返回String的所有值?

时间:2018-04-24 13:48:30

标签: java file jframe

我正在制作幻灯片类,我需要从列表中返回所有值(String类型)(使用File类型的元素)。我使用File [counter] .getAbsolutePath()来获取稍后我需要的String。但是,我需要获取通过File的路径的所有值。

public String getFilesFromDirectory(String path) {

    File thisDirectory = new File(path);
    File[] listDirFiles = thisDirectory.listFiles()
    while (count < listDirFiles.length-1) 

        if(listDirFiles[count].isFile() || listDirFiles[count].isDirectory() || listDirFiles[count].isHidden()){
            count++;
            System.out.println(listDirFiles[count].getAbsolutePath());
    }

    return listDirFiles[count].getAbsolutePath();

计数为0

在if语句中,我想返回所有listDirFiles [count] .getAbsolutePath(),但问题是在if语句之后。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

据我所知,你想要返回目录中所有可用文件的绝对路径。

所以我建议返回一个字符串列表List<String>而不是单个字符串。然后你的代码应该是这样的:

public List<String> getFilesFromDirectory(String path) {

    List<String> filePaths = new ArrayList<String>();
    File thisDirectory = new File(path);
    File[] listDirFiles = thisDirectory.listFiles()

    // i would choose a for each loop for this instead of while...
    for(File file : listDirFiles) {
        if(file.isFile() || file.isDirectory() || file.isHidden()) {
            // add the path to the list
            filePaths.add(file.getAbsolutePath());
        }
    }

    return filePaths;
}

答案 1 :(得分:0)

你需要迭代你的&#34; listDirFiles&#34;,得到de String并保存在字符串的集合(List / Set / Array)中并返回该集合。

示例:

List<String> filesPath = new ArrayList<>();
for(int x=0; x<listDirFiles.lenght; x++){
   filesPath.add(listDirFiles[x].getAbsolutePath());

}

return filesPath;

您也可以使用Lambda表达式https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html