課題内容には、引数に指定したファイル分、引数の逆順で出力するとありますが、
今は3つのファイルの内容を逆順に出力している状態です。
(例えばこれが「text1.txt text2.txt」の2つしかなかった場合、ArrayIndexOutOfBoundsExceptionが発生。)
ちなみに、4ファイル指定しても4ファイル目は無視され、3ファイル目までの逆順が表示されます。
0件でも100件であっても、指定したファイルの逆順で出力したいです。
public class Exercise8 { /** * 例題実行確認 * * @param args コマンドライン引数 * * 課題内容 cat(Unix)・type(Windows)のような振る舞いをするプログラムを作成してください。 * ただし、このプログラムは、ファイルを逆順に出力します。 コンソールから「java * jp.i2c.dev.<氏名>.Exercise8 text1.txt text2.txt text3.txt」として * プログラムを起動すると、まずtext3.txtが出力され、次にtext2.txtが出力されるようにしてください。 ※ * プログラム実行時のクラスパスは適宜設定して実行をしてください。 * * <仕様> ・入出力例外が発生した場合は、「入出力例外が発生しました」を表示して、処理を終了する * * ■ 出力例 text3.txtの内容が出力 text2.txtが内容が出力 text1.txtが内容が出力 * * */ public static void main(String[] args) { try { List<String> list = Files.readAllLines(Paths.get(args[0])); List<String> list1 = Files.readAllLines(Paths.get(args[1])); List<String> list2 = Files.readAllLines(Paths.get(args[2])); LinkedList<List<String>> lists = new LinkedList<List<String>>(); lists.add(list); lists.add(list1); lists.add(list2); Collections.reverse(lists);// 要素を逆順にする for (int i = 0; i < lists.size(); i++) { List<String> nlist = lists.get(i); for (int j = 0; j < nlist.size(); j++) { System.out.println(nlist.get(j)); } } } catch (IOException e) { System.out.println("入出力例外が発生しました"); } }
100 のファイルをすべてメモリに読み込むというのは現実的ではありません。
一つのファイルを逆順に出力する関数を作り、それを 100 回繰り返すのが普通です。
回答3件
あなたの回答
tips
プレビュー