将ArrayList<File>转换为File[]数组

9
我需要将一个ArrayList转换为普通的数组File[]。
File[] fSorted = (File[]) x.toArray();

错误: Cast Exception
意思是类型转换异常。
Exception in thread "Thread-5" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.io.File;

如何将列表x返回为文件数组列表?
--
我的函数:
private File[] sortFiles(File[] files){;

    ArrayList<String> allFiles = new ArrayList<String>() ;
    for (int index = 0; index < files.length; index++)  
    {  
        File afile = new File(files[index].toString());
        allFiles.add(afile.getPath().toString());

    } 
    java.util.Collections.sort(allFiles);

    ArrayList<File> x = new ArrayList<File>();
    for(int i = 0; i< allFiles.size(); ++i){
        x.add(new File(allFiles.get(i)));
    }
    File[] fSorted = (File[]) x.toArray();

    return fSorted;

}

1
可能是重复的问题:将ArrayList<String>转换为String[] - Cat
1
可能是Convert list to array in java的重复内容。 - Eng.Fouad
1个回答

22

使用:

File[] fSorted = x.toArray(new File[x.size()]);

2
+1 我个人更喜欢Foo[] array = new Foo[list.size()]; list.toArray(array); 只是为了可读性 :) - Eng.Fouad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接