无法从List <file>转换为List <path> </path> </file>

时间:2014-04-05 10:28:23

标签: java

显然,无法从List&lt; File&gt;转换。列出&lt;路径&gt;。我试图这样做,因为JFileChooser返回一个File对象数组。现在,我只是好奇Java中是否有比使用循环更优雅(功能)的方法。

import java.io.File;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {

  public static void main(String[] args) {
    File[] array = new File[] { new File("a.txt"), new File("b.txt"),
      new File("c.txt"), new File("d.txt") };

    // Type mismatch: cannot convert from List<File> to List<Path>
    // List<Path> list = Arrays.asList(array);

    // This will work but is not particularly pretty
    List<Path> list = new ArrayList<Path>();
    for (int i = 0; i < array.length; i++) {
      list.add(array[i].toPath());
    }

    System.out.println(list);
  }
}

1 个答案:

答案 0 :(得分:7)

您已经可以使用更好的循环

for(File f: array) {
  list.add(f.toPath();
}

然后,如果您使用的是Java 8,则可以使用以下内容来使用新流:

final List<Path> list = Arrays.stream(array).map(File::toPath)
    .collect(Collectors.toList());