【问题标题】:Getting unhandled exception error when trying to read a file while using try/catch block使用 try/catch 块尝试读取文件时出现未处理的异常错误
【发布时间】:2020-03-25 23:58:44
【问题描述】:

我正在尝试创建一个读取 .java 文件然后将每一行放入 ArrayList 的程序:

import java.util.ArrayList;
import java.util.Scanner;
import java.io.IOException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

class H01_43 {

    public static void main(String[] args) {
        Scanner userInput = new Scanner( System.in );
        System.out.println("Please enter the file name.");
        String fileName = userInput.nextLine();
        TextFile file1 = new TextFile();

        file1.createArray(fileName);

        userInput.close();
    }
}

class TextFile{

    public TextFile(){ 

    }

    public void createArray(String pFileName){
        String currentLine = "";
        ArrayList<String> mList = new ArrayList<>();    

        try{   
            Scanner userFile = new Scanner(newFile(pFileName));        
            while(userFile.hasNextLine()){
                currentLine = userFile.nextLine();
                mList.add(currentLine);

            }
        }catch(FileNotFoundException exception){
            e.printStackTrace();

        }finally{
            userFile.close();
        }
    }

}

我不断收到以下错误消息:

线程“main”java.lang.Error 中的异常:未解决的编译 问题:
未处理的异常类型 FileNotFoundException

在 TextFile.createArray(H01_43 将 java 文件制作成 txt file.java:47)
at H01_43.main(H01_43 将java文件转成txt file.java:27)

我尝试与一位导师合作,他说我的代码看起来不错,但不知何故我继续生成此错误,因此无法编译或测试我的代码。

【问题讨论】:

  • 欢迎来到 Stack Overflow。首先要做的是关闭任何允许您运行无法编译的代码的功能。这几乎从来都不是一个好主意——在这种情况下,它会让人感到困惑,因为你遇到了一个异常(这通常是由于在执行时发生了一些不好的事情),但真正的原因是你的代码无法编译。不幸的是,由于不同原因,您向我们展示的代码无法编译——您没有向我们展示newFile 方法。仔细查看编译错误 - 您的 IDE 应该可以帮助您查明它们的位置。在尝试运行之前将它们全部修复。
  • 显示完整代码
  • 我花了比我承认的时间更长的时间来解决这个问题。但是,我认为最大的问题之一是 VS Code(或者我无法正确使用它)。因为在进行更改后,我的代码能够在使用命令提示符窗口时编译和运行,但在 VS Code 中使用 powershell 时却不能。有人知道为什么吗?

标签: java exception filenotfoundexception


【解决方案1】:

自上学期以来,我实际上一直在努力解决这个问题,只是想通了。这是我的更改方法:

public void createArray(String pFileName){
    String currentLine = "";
    ArrayList<String> mList = new ArrayList<>();    

    try{   
        Scanner userFile = new Scanner(new File(pFileName));        
        while(userFile.hasNextLine()){
            currentLine = userFile.nextLine();
            mList.add(currentLine);

        }
    }catch(FileNotFoundException exception){

    }

}

第一个问题是 newFile 应该是新文件,但我的主要问题是我需要删除 finally 和 userFile.close()。我不确定为什么会这样,如果有人对我有一些见识,我将不胜感激。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2019-06-29
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多