2013-04-23 2 views
0

Написать программу Найти, что ищет все файлы, указанные в командной строке, и выводит все строки, содержащие указанное слово. Например, если вы звонитеЗаписать программу Найти, что ищет все файлы, указанные в командной строке, и выводит все строки, содержащие указанное слово

java Find ring report.txt addres.txt Homework.java

, то программа может печатать

report.txt: has broken up an international ring of DVD bootleggers that 
address.txt: Kris Kringle, North Pole 
address.txt: Homer Simpson, Springfiled 
Homework.java: String filename 

Прежде всего, я не мог понять, как хранить все строки, которые приведены в командная строка. Кроме того, мой код только распечатывает часть строки после найденного слова (поэтому для inst6ance он выводит только: из бутлегеров DVD для первого файла. Как я могу решить эту проблему? Может ли кто-нибудь мне помочь?

Вот моя попытка:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 


public class P6 { 

    /** 
    * @param args 
    * @throws FileNotFoundException 
    */ 
    public static void main(String[] args) throws FileNotFoundException { 
     // TODO Auto-generated method stub 


     for (int i = 0; i<args.length; i++) 
     { 
      String arg = args[i]; 
     } 

     String input = "ring"; 

     File one = new File("report.txt"); 
     Scanner in = new Scanner(one); 
     while (in.hasNext()) 
     { 
      String een = in.next(); 

      if(een.matches(input)) 
      { 
       System.out.println(in.nextLine()); 
      } 
     } 

    } 

} 
+0

Вы хотите прочитать содержимое данного имени файла в командной строке –

+2

@msw Как и ваш другой комментарий, этот комментарий не очень полезен. Я попытался сформулировать вопрос наилучшим образом, и я записал свою попытку. Поскольку я новичок в этом форуме, вы также можете просто сказать мне, что я должен изменить, и попытаться помочь мне найти ответ. – dreamer

+0

@AchintyaJha Да, это правда. Он должен проверять все программы из командной строки на одно конкретное слово, а затем распечатывать всю строку этой программы, в которой отображается это слово. – dreamer

ответ

1
public static void main(String[] args) throws FileNotFoundException { 
    String input = args[0]; 
    for (int i = 1; i < args.length; i++) { 
     System.out.println(" File " + args[i]); 
     File one = new File(args[i]); 
     Scanner in = new Scanner(one); 
     while (in.hasNext()) { 
      String line = in.nextLine(); 
      if (line.contains(input)) { 
       System.out.println(line); 
      } 
     } 
    } 
} 
+0

Большое спасибо! Это абсолютно идеально! Очень элегантное решение. Я высоко ценю вашу помощь: D! – dreamer

+0

Вы также должны убедиться, что 'args' имеет как минимум два элемента и что файлы, указанные в командной строке, существуют. –

+0

Я думаю, что while (in.hasNext()) должно быть while (in.hasNextLine()). –

0

Попробуйте это:

File one = new File("try.txt"); 
    Scanner in = new Scanner(one); 
    String input = "jha"; 
    while (in.hasNextLine()) { 
     String een = in.nextLine(); 

     if (een.contains(input)) { 
      System.out.println(een); 
     } 
    } 
+0

Это не я, я поддержал это. Спасибо за вашу помощь :). – dreamer

+0

Ваш код не имеет никакого разницы с mause's ... но поскольку mause upvote это, я отменил мой downvote. – johnchen902

+0

@ johnchen902 Я выдвигаю всех, кто предпринимает усилия, чтобы сделать серьезную попытку помочь мне. Поэтому я поддержал его :)). – dreamer

Смежные вопросы