JAVA:将字符串(file.getAbsolutePath())添加到列表(List)

时间:2013-09-28 15:01:37

标签: java file list

我有一个非常简单的代码:

private final JFileChooser chooser;
private List list, fileList;

//some codes

int returnVal = chooser.showDialog(CountdownTimer.this, "Select Files");

    if(returnVal==JFileChooser.APPROVE_OPTION) {
        File[] file = chooser.getSelectedFiles();

        System.out.println("Selected files:");
        for(int i=0; i<file.length; i++) {
            list.add(file[i].getName());
            fileList.add(file[i].getAbsolutePath());
            System.out.println("list["+i+"] "+file[i].getName());
            System.out.println("fileList["+i+"] "+file[i].getAbsolutePath());
        }

    }
    else System.out.println("No selection.");

我需要两个清单。第一个将用于查看(和删除)目的而另一个 用于压缩所有选定的文件。在zip文件中,我将需要每个文件的位置和名称。但由于某种原因,该行

    fileList.add(file[i].getAbsolutePath());

生成错误“线程中的异常”AWT-EventQueue-0“java.lang.NullPointerException”而行

    list.add(file[i].getName());

做得很好。我使用GUI的列表列表列表文件列表作为压缩代码。

3 个答案:

答案 0 :(得分:2)

我没有看到任何地方fileList(或list)被实例化如下:

fileList = new ArrayList<String>();

提示:您应该认真看待Java泛型并声明您的列表:

private List<String> list, fileList;

使其成为仅包含List个对象的类型String

答案 1 :(得分:0)

private List list, fileList; //这是初始化List所需的问题。

用下面的代码替换

private List<String> list new ArrayList<String>();

private List<String> fileList new ArrayList<String>();

答案 2 :(得分:0)

我做的是:

    private List list;
    private ArrayList<String> fileList = new ArrayList<String>();