执行while循环

时间:2017-11-13 03:25:57

标签: java output processbuilder

我正在使用ProcessBuilder记事本窗口中打开文本文件,并根据我的代码打开另一个记事本窗口,其中包含已处理的文本。

  

现在正在发生的是程序打开第一个记事本窗口   我放入了一个文本但是第二个窗口空了。

有人建议我在哪里需要进行更改才能在第二个记事本窗口中打印已处理的文本? (我在代码下面包含了输出)。我在控制台中打印了正确的结果,但没有在记事本窗口中打印出来。我之前从未使用过ProcessBuilder,只能找到如何使用它的简单示例。感谢您的建议。

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();

应该在记事本窗口中打印出来:

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

1 个答案:

答案 0 :(得分:0)

你永远不会向fileout写任何东西。您创建了该文件但它是空的。

我相信你想要

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

此外,您需要在 启动第二个流程之前关闭fileout