2016-09-08 9 views
1

inputFileの内容を他の複数のファイルにコピーしようとしています。私はコマンドライン引数を使用してこれをしようとしています。複数の出力ファイルへのJavaコピー入力

しかし、私はプリントライターの閉鎖にいくつかの困難を抱えています。どこで、どのようにすればいいのか分かりません。私のfor-loopでそれを行うと、コンテンツは1つの出力ファイルにのみコピーされます。私はif文を試しましたが、それもうまくいきませんでした。私がfor-loopの外側でそれを閉じると。 for-loopの中で宣言して以来、意味のある「シンボルエラーを見つけることができません」というメッセージが表示されます。

私の質問は次のようなものです。この状況で、どのようにしてプリントライターを閉じなければならないのですか?

ありがとうございます。

import java.util.*; 
import java.io.*; 
public class try13 { 
    public static void main(String[] args) throws FileNotFoundException { 
     File inputFile = new File(args[0]); 
     Scanner in = new Scanner(inputFile); 
     for(int i = 1; i < args.length; i++) { 
      PrintWriter out = new PrintWriter(args[i]); 
      while (in.hasNextLine()) { 
       String line = in.nextLine(); 
       out.println(line); 
      } 
     } 
     in.close(); 
     out.close(); 
    } 
} 
+0

入力ファイルを複数の出力ファイルに分割しようとしているのですか、または入力ファイル全体を複数の出力ファイルにコピーしようとしていますか? – Jason

+0

入力ファイル全体を複数の出力ファイルにコピーしようとしています – Tezen

答えて

0

最初にすべての出力への入力から読み取った各ラインコピー、PrintWritersの配列を作る:

:あなたはJava8を使用していない場合

import java.util.*; 
import java.io.*; 
public class try13 { 
    public static void main(String[] args) throws FileNotFoundException { 
     File inputFile = new File(args[0]); 
     Scanner in = new Scanner(inputFile); 

     /* Create all the writers and put then in a list */ 
     List<PrintWriter> writers = new ArrayList<>(); 
     for(int i = 1; i < args.length; i++) { 
      writers.add(new PrintWriter(args[i])); 
     } 

     /* Read each line and write it to all writers */ 
     while (in.hasNextLine()) { 
      String line = in.nextLine(); 
      writers.forEach(writer -> writer.println(line)); 
     } 

     in.close(); 

     /* Close all the writers */ 
     writers.forEach(writer -> { 
       try { 
        writer.close(); 
       } catch(Exception e) {} 
     }); 
    } 
} 

を、これを試してください

/* Read each line and write it to all writers */ while (in.hasNextLine()) { String line = in.nextLine(); for(PrintWriter writer : writers) { writer.println(line); } } 

...と、この:

/* Close all the writers */ 
for(PrintWriter writer : writers) { 
    try { 
     writer.close(); 
    } catch(Exception e) {} 
} 
+0

うわー、ありがとうございます。本当にありがとう。私はJava8を使用しているので動作します – Tezen

+0

あなたはようこそ。 upvoteに自由に感じてください。 – Jason

関連する問題