从linux终端上的用户输入读取文件名 - JAVA

时间:2016-04-07 14:39:54

标签: java linux file terminal

我想在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());

如果我把它放在字符串上的硬编码上,我可以打开文件。 但是我需要从终端接收它作为输入。

我缺少什么?

3 个答案:

答案 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 /编译器告诉您的内容非常有用......

希望有所帮助