我想在JAVA中创建一个小脚本,以便在linux终端中接收文件名并读取该文件。
这就是我正在尝试的:
import java.util.Scanner;
import java.io.*;
class ItauScript {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("Filename: ");
String fileName = reader.next();
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
System.out.println(bufferedReader.readLine());
}
}
但代码没有编译。我收到此错误消息:
hello.java:10:错误:未报告的异常FileNotFoundException;必须 被抓或被宣布被抛出 FileReader fileReader = new FileReader(fileName); ^ hello.java:13:错误:未报告的异常IOException;必须被抓住或宣布被抛出 的System.out.println(bufferedReader.readLine());
如果我把它放在字符串上的硬编码上,我可以打开文件。 但是我需要从终端接收它作为输入。
我缺少什么?
答案 0 :(得分:1)
FileNotFoundException
是已检查 Exception
(由IOException
抛出的父类readLine
),修改main
为重新抛出 1 就像
public static void main(String[] args) throws IOException {
或用https://www.microsoft.com/en-gb/download/details.aspx?id=48145之类的
包围它try (FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader)) {
System.out.println(bufferedReader.readLine());
} catch (IOException e) {
e.printStackTrace();
}
1 但 仍应close
bufferedReader
中的finally
。
答案 1 :(得分:1)
您需要处理可能的异常。您可以指定封闭方法main
抛出异常,但最好自己处理它。
import java.util.Scanner;
import java.io.*;
class ItauScript {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
try
{
System.out.println("Filename: ");
String fileName = reader.next();
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
System.out.println(bufferedReader.readLine());
}
catch(IOException e)
{
e.printStackTrace();
//TODO handle error
return;
}
}
}
答案 2 :(得分:1)
尝试:
import java.util.Scanner;
import java.io.*;
class ItauScript {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("Filename: ");
String fileName = reader.next();
try {
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
System.out.println(bufferedReader.readLine());
} catch (IOException e) {
// handle exception (if any) here
}
}
}
正如其他人所说,如果出现错误,请阅读IDE /编译器告诉您的内容非常有用......
希望有所帮助