回答編集履歴

1 追記。

smk7758

smk7758 score 36

2018/01/24 19:39  投稿

こんな感じでどうです(4パターン)?
```java
public class Main {
   public static void main(String[] args) throws IOException {
       if (args.length < 2) {
           System.err.println("Argument is too short.");
           return;
       }
       String line_result = null;
       Path path = Paths.get(args[0]);
       int line_number = Integer.parseInt(args[1]);
       try (Stream<String> lines = Files.lines(path)) {
           line_result = lines.skip(line_number).findFirst().orElse(null);
           if (line_result == null) System.err.println("out of lines.");
           else System.out.println(line_result);
       }
       {
           List<String> lines = Files.readAllLines(path);
           if (lines.size() < line_number) System.err.println("out of lines.");
           else {
               line_result = lines.get(line_number);
               System.out.println(line_result);
           }
       }
       try (BufferedReader br = Files.newBufferedReader(path);
               Stream<String> lines = br.lines();) {
           line_result = lines.skip(line_number).findFirst().orElse(null);
           if (line_result == null) System.err.println("out of lines.");
           else System.out.println(line_result);
       }
       try (BufferedReader br = Files.newBufferedReader(path)) {
           // skip動作
           for (int i = 0; i < line_number; i++) {
               br.readLine();
           }
           if ((line_result = br.readLine()) == null) System.err.println("out of lines.");
           else System.out.println(line_result);
       }
   }
}
```
```
追記: 質問が更新される前のを見てたのでそういうプログラムだけ乗っけました。
ここからメソッド分割などして、セクションのいずれかを使って下さい。
なお、自分も初心者なので一応動くと思いますが、正しい動作をするとは限りません。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る