/* * 練習問題 20.5 p.463 * 指定されたファイルを読み込んで、指定された単語を検索するプログラムを作成しなさい。 * 単語が発見された全ての行を、行の前に行番号を付けて表示しなさい */ package ch20.ex20_05; import java.io.*; public class FindWord { public static void main(String[] args) throws IOException { if (args.length != 2) { throw new IllegalArgumentException("need word and file"); } String match = args[0]; FileReader fileIn = new FileReader(args[1]); LineNumberReader in = new LineNumberReader(fileIn); int ch; String line = ""; int count = 0; int previousLine = 0; boolean findFlag = false; while ((ch = in.read()) != -1) { if (in.getLineNumber() != previousLine) { if (findFlag == true) { System.out.println(previousLine + ": " + line); } line = ""; findFlag = false; } previousLine = in.getLineNumber(); if (ch != '\n') { line = line + String.valueOf((char) ch); } if (ch == match.charAt(count)) { count++; } else { count = 0; } if (match.length() == count) { findFlag = true; count = 0; } } if (findFlag == true) { System.out.println(previousLine + ": " + line); } line = ""; findFlag = false; } }