2016-04-26 19 views
0

mainメソッドの配列を使用して2つ以上のファイルからテキストを読みたい。出来ますか? (私のコードは私が初心者であるため少し奇妙なことがあります)BufferedReader(String [] args)を使用して複数のファイルを読み込む

ここは私のコードです。

public static void main(String[] args) throws IOException { 
    if(args.length != 1) 
    { 
     System.out.println("wrong number of arguments"); 
     System.exit(1); 
    } 
    args[0] = "data.txt"; 
    args[1] = "data2.txt"; 

    BufferedReader file = new BufferedReader(new FileReader(args[0],args[1])); 
    int NumberofRows =0, NumberofCharacter =0; 
    while(true) 
    { 
     String row = file.readLine(); 
     if(row == null) 
      break; 
     NumberofRows++; 
     NumberofCharacter = NumberofCharacter + row.length(); 

    } 
    System.out.println("The files "+" data.txt " + " and " "data2.txt "+ "contains "+ NumberofRows+ "rows and NumberofCharacter contains"+ 
    NumberofCharacter +" character"); 

    file.close(); 
+0

コンパイルしていますか?私は2つのファイルパスを受け入れるFileReaderのコンストラクタを見つけることができません。そしてなぜあなたはあなたの入力パラメータargsを上書きしますか? –

答えて

3

@Lena:なぜmainメソッドのargs []に値に影響を与えますか?

args[0] = "data.txt"; 
args[1] = "data2.txt"; 

引数は、[]。長さ< 1、引数[]。長さを引き起こす!= 1は常にtrueになります場合は、あなたのメイン、およびテストを実行しながら、その代わりに[]引数にファイルの名前を渡すことができます2つ以上のファイルを読みたい場合。ですから、@ugurdonmezによれば、同じ大きさのargsを持つBufferedReader配列を作成できます。

public static void main(String[] args)throws IOException { 
       if(args.length <1) 
       { 
        System.out.println("wrong number of arguments"); 
        System.exit(1); 
       } 
       for(int i=0; i<args.length; i++) 
       { 
        BufferedReader file = new BufferedReader(new FileReader(args[i])); 
        int NumberofRows =0, NumberofCharacter =0; 
        while(row = file.readLine()) !=null) 
        { 
         String row = file.readLine(); 
         NumberofRows++; 
         NumberofCharacter = NumberofCharacter + row.length(); 
        } 
       } 
       System.out.println("The files "+" data.txt " + " and " "data2.txt "+ "contains "+ NumberofRows+ "rows and NumberofCharacter contains"+ 
     NumberofCharacter +" character"); 
       file.close(); 
      } 
    } 
+0

私はいくつかの引数を与えようとしましたargs [0] = "data.txt"; args [1] = "data2.txt";それは私が想像するように動作しませんでした。私はあなたがその文の意味を理解しています。 "あなたはargs []"にファイルの名前を渡すことができます。問題は、私がargs []でファイル名を渡すか、引数を与えることができないのかどうかわかりません。例を挙げて、@Asma、 –

+0

@LenaMonikaMarshallの例をコマンドラインから実行すると、このようにmainメソッドに引数を渡すことができます。java ClassName arg1 arg2 ... argN たとえば、Eclipseを使用している場合は、このトピックを参照してください。[link](http://stackoverflow.com/questions/373328/invoking-java-main-method-with-parameters-from-eclipse) – Asma

1

同じサイズのargsを持つBufferedReader配列を作成できます。そして、それらをループで構築することができます。

+0

私はAsmaに同じ質問をしました。私は彼が少し忙しいと思う。あなたが私の質問に答えてくれたら、私は感謝しています。私の質問は、 args []でファイル名を渡すか、argsに引数を渡すにはどうすればよいですか? @ugurdonmez –

+0

@ LenaMonikaMarshallコマンドラインから名前を付けることができます。ちょうどGoogleのJavaコマンドライン引数。いくつかのIDEを使用している場合は、IDE名で検索してください。 – ugurdonmez

+0

http://www.cs.colostate.edu/helpdocs/eclipseCommLineArgs.htmlありがとうございます@ugurdonmez –

2
public static void main(String[] args)throws IOException { 
    if (args.length != 1) { 
     System.out.println("wrong number of arguments"); 
     System.exit(1); 
    } 
    args[0] = "data.txt"; 
    args[1] = "data2.txt"; 

    for (int i = 0; i < args.length; i++) { 

     BufferedReader file = new BufferedReader(new FileReader(args[i])); 
     int NumberofRows = 0, NumberofCharacter = 0; 
     while (true) { 
      String row = file.readLine(); 
      if (row == null) 
       break; 
      NumberofRows++; 
      NumberofCharacter = NumberofCharacter + row.length(); 

     } 

     file.close(); 
    } 
} 
0
String row = ""; 
while(row = file.readLine()) !=null) 
    { 
     System.out.println(row); 
     NumberofRows++; 
     NumberofCharacter += row.length(); 
    } 

あなたはファイルを読み込むには、ファイルから行を読み取るために力プログラムいけないときに、このアプローチを検討したいかもしれません。例外が発生することがあります。

2

私はeclipseのショートカットを見つけました。

1)実行 - >実行コンフィギュレーションを実行 2)引数タブをクリック 3)プログラム引数セクションに引数を入力します。 4)enter image description hereクリックして適用

関連する問題