将另一个类的变量作为文件名(GUI)

时间:2016-06-15 22:51:35

标签: java swing user-interface

我的一类GUI有一个文件名变量。我想将它传递给另一个类,这样我就可以处理文件,而不必每次都对文件名进行硬编码。该程序编译良好,但我似乎无法正确运行。

public void run() {
  WordsCounter2 fileName = new WordsCounter2();
  essayName = fileName.getFileList();
    File f = new File(essayName);
    //other code

WordsCounter2是包含变量fileName的类,我从这个类中调用它并将其指定为文件名,但这不起作用。有人可以帮忙吗?

     if (rVal == JFileChooser.APPROVE_OPTION) {
        File[] selectedFile = fileChooser.getSelectedFiles();
        fileList = "nothing";
        if (selectedFile.length > 0) 
           fileList = selectedFile[0].getName();
        for (int i = 1; i < selectedFile.length; i++) {
           fileList += ", " + selectedFile[i].getName();
        }
        statusBar.setText("You chose " + fileList);
     }
     else {
        statusBar.setText("You didn't choose a file.");
     }

fileList不为空,因为我在GUI上有一个标签,列出了我选择的任何文件。

这是我的新编辑:现在异常发生在扫描仪的最后一行并抛出一个NPE。你能帮忙吗?

public void run() {
  WordsCounter2 pathNamesList = new WordsCounter2();
  essayName = pathNamesList.getPathNamesList();
  essayTitle = new String[essayName.size()];
  essayTitle = essayName.toArray(essayTitle);
  for (int i = 0; i < essayTitle.length; i++) {
       f = new File(essayTitle[i]);
  }
    try {
        Scanner scanner = new Scanner(f);

1 个答案:

答案 0 :(得分:0)

您的代码失败,因为File不接受逗号分隔的文件名,实际上,它需要一个文件路径来在上述路径中创建文件。见这里:https://docs.oracle.com/javase/7/docs/api/java/io/File.html

您必须在数组中获取完整路径并按如下方式放置文件创建语句:

File f;
for (int i=0; i<fileList.length; i++)
    f = new File(fileList[i]);

其中fileList是一个包含路径名列表的String数组。

如果您尝试将某些内容写入这些文件,这应该会有所帮助:Trying to Write Multiple Files at Once - Java