2017-11-13 5 views
1

ProcessBuilderを使用して、のメモ帳ウィンドウにテキストファイルを開き、別のメモ帳ウィンドウを自分のコードに従って開きます。Do whileループ後にProcessBuilderが空の出力を出力します

今のところ、プログラムは1番目のメモ帳ウィンドウ を開き、2番目のウィンドウは空になります。

2番目のメモ帳ウィンドウに印刷されたテキストを処理するには、どこから変更する必要があるのでしょうか? (私はコードの下に出力を含めました)。コンソールには正しい結果が表示されますが、メモ帳ウィンドウには表示されません。以前はProcessBuilderを使用したことがなく、使用方法の簡単な例しか見つかりませんでした。あなたのアドバイスを感謝します。

/*1*/ Somewhere over the rainbow 
/*2*/ Way up high 
/*3*/ And the dreams that you dreamed of 
/*4*/ Once in a lullaby 
+3

2番目のプロセスビルダーのプロセスを開始する場所の前に 'fileout.close()'を***に移動します。ファイルを使用する前にファイルにフラッシュする必要があります。また、編集可能(未使用)である必要があります。 –

+0

@HovercraftFullOfEelsあなたの提案をありがとう。私はちょうどそれを試み、それはまだ空のウィンドウをもたらします:( – Rish

答えて

0

あなたはfileoutに何かを書き込むことはありません:

Scanner in = new Scanner(System.in); 
    System.out.print("Enter the input file: "); 
    String inputFileName = in.next(); 
    System.out.print("Enter the output file: "); 
    String outputFileName = in.next(); 

    String poemFilename = "poem.txt"; 
    String poemoutFilenamo = "newpoem"; 
    int lineNum = 1; 

    File poemFile = new File(poemFilename); 
    Scanner fileIn = new Scanner(poemFile); 
    PrintWriter fileout = new PrintWriter(poemoutFilenamo); 

    System.out.printf("Read in %s.\nWrote out %s.\n",inputFileName, outputFileName); 

    ProcessBuilder Poemin = new ProcessBuilder("Notepad.exe", poemFilename); 
    Poemin.start(); 

    if (fileIn.hasNextLine()) { 
     do { 
      String line = fileIn.nextLine(); 
      System.out.printf("/*" + lineNum + "*/ %s\n", line); 
      lineNum++; 
     } while (fileIn.hasNextLine());; 

     ProcessBuilder Poemout = new ProcessBuilder("Notepad.exe", poemoutFilenamo); 
     Poemout.start(); 
    } 

    in.close(); 
    fileIn.close(); 
    fileout.close(); 

は、メモ帳のウィンドウでこれを印刷する必要があります。ファイルを作成しましたが、ファイルは空です。

は、私はあなたが

fileout.printf("/*" + lineNum + "*/ %s\n", line); 

をしたいと考えているし、また、あなたは第二のプロセスを起動する前fileoutを閉じる必要があります。

関連する問題