Java-我想从命令行读取一个文件名,然后使用BufferedReader读取每一行

2022-05-08 00:00:00 command-line java bufferedreader

我在

上看到日食红色下划线错误
 br = new BufferedReader(new FileReader(inFile));

"inFile"上的行。这是我想要读取的对象,我相信它包含了我在命令行中给它的命令行文件名/路径。我是否处理错了?

import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {

     public static void main(String[] args) {
      if (0 < args.length) {
          File inFile = new File(args[0]);
      }

        BufferedReader br = null;

        try {

            String sCurrentLine;

            br = new BufferedReader(new FileReader(inFile));

            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }

        } 

        catch (IOException e) {
            e.printStackTrace();
        } 

        finally {
            try {
                if (br != null)br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}

解决方案

更改:

if (0 < args.length) {
    File inFile = new File(args[0]);
}

至此:

File inFile = null;
if (0 < args.length) {
   inFile = new File(args[0]);
} else {
   System.err.println("Invalid arguments count:" + args.length);
   System.exit();
}

因为file变量无法在if/else语句外部访问。

我已在else中(对于未提供args的情况)添加了一条友好消息,说明参数计数无效并退出程序。

相关文章