如何将数组中的某些File元素复制到新的File数组?

时间:2012-04-05 03:11:39

标签: java arrays swing file list

这可以实现吗?我有File foo [],它有一个包含5个文件的列表。但我只想将foo [0]和foo [3]复制到文件栏[]中,以便bar []只有2个元素。

我的代码获取foo []的长度,然后如果所选文件的索引等于i的索引,则将foo [i]添加到bar [i]。 这是我构建的可能代码:

for(int i = 0; i < foo.length; i++){

    if(list_fileListing.getSelectedIndex() == i){
        bar[i] = foo[i];
    }
}

* list_fileListing.getSelectedIndex()保存JList中所选文件的列表。* 原因是我有一个可在JList中选择的文件列表。从该列表中,我希望用户能够选择要附加到电子邮件的文件。

3 个答案:

答案 0 :(得分:2)

如果您在JList上调用getSelectedValues(),您将获得一个包含当前所有项目的数组:

Object[] selectedObjects = list_fileListing.getSelectedValues();

for (int i = 0; i < selectedObjects.length; i++)
{
    File aFile = (File)selectedObjects[i];

    // attach this file
}

这还够吗?

答案 1 :(得分:2)

由于您已弃用JList.getSelectedValues(),因此看起来您正在使用Java7。请尝试使用getSelectedValuesList()方法。如果您需要阵列,可以使用list.getSelectedValuesList().toArray()

答案 2 :(得分:2)

根据您的评论,您的JList个实例包含String个实例而非File个实例。所以你可以做类似

的事情
List<String> selectedFilesAsStrings = list_fileListing.getSelectedValuesAsList();
//selectedFilesAsStrings will never be null, but can be empty
List<File> selectedFiles = new ArrayList<File>( selectedFilesAsStrings.size() );
for( String fileName : selectedFilesAsStrings ){
  selectedFiles.add( new File( fileName ) );
}
File[] bar = selectedFiles.toArray( new File[ selectedFiles.size() ] );

bar数组设置为指向包含所选File个实例的数组