Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ProcessBuilder在do while循环后打印空输出_Java_Output_Processbuilder - Fatal编程技术网

Java ProcessBuilder在do while循环后打印空输出

Java ProcessBuilder在do while循环后打印空输出,java,output,processbuilder,Java,Output,Processbuilder,我正在使用ProcessBuilder在记事本窗口中打开一个文本文件,并根据我的代码打开另一个记事本窗口,其中包含已处理的文本 现在发生的事情是程序打开了第一个记事本窗口 我在里面放了一段文字,但第二个窗口是空的 是否有人建议我需要在哪里进行更改,以便在第二个记事本窗口中打印处理过的文本?(我在代码下面包含了输出)。我在控制台中打印了正确的结果,但没有在记事本窗口中打印。我以前从未使用过ProcessBuilder,只能找到如何使用它的简单示例。谢谢你的建议 Scanner in = new S

我正在使用
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

您从不向
文件输出写入任何内容。您创建了该文件,但该文件为空

我相信你想要

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

在启动第二个进程之前,您还需要关闭
fileout

您从不向
fileout
写入任何内容。您创建了该文件,但该文件为空

我相信你想要

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

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

fileout.close()
移动到启动第二个process builder流程之前。在尝试使用该文件之前,您需要刷新到该文件,并且该文件还需要可编辑(不在使用中)。@HovercraftFullOfEels谢谢您的建议。我刚刚尝试了它,但它仍然会显示空窗口:(将
fileout.close()
移动到启动第二个process builder进程之前的位置。在尝试使用该文件之前,需要刷新到该文件,并且该文件需要可编辑(未使用)还有。@HovercraftFullOfEels谢谢你的建议。我刚试过,它仍然会弹出空窗口:(