【问题标题】:Having a variable from another class as the file name (GUI)将另一个类的变量作为文件名 (GUI)
【发布时间】:2016-06-15 22:51:34
【问题描述】:

我的 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);

【问题讨论】:

  • 您可以将您遇到的错误添加到帖子中吗?为 WordsCounter2.getFileList() 添加代码也会有所帮助。
  • 代码如下:
  • 公共 WordsCounter2(String fileList) { this.fileList = fileList; } 公共字符串 getFileList() { 返回文件列表; }
  • 所以也许 fileList 的值只是空的?你从来没有通过构造函数初始化它。
  • 我已经编辑了我的问题以显示 fileList 不为空。

标签: java swing user-interface


【解决方案1】:

您的代码失败了,因为 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 是一个保存路径名列表的字符串数组。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 2012-03-30
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多