簡體   English   中英

從cmd重定向輸出時,為什么輸出文件為空?

[英]Why am I getting the output file as empty when I am redirecting the output from cmd?

我正在創建一個JAVA Web應用程序以在線判斷代碼。 我正在獲取用戶上傳的.java文件,並將其存儲在C:\\ uploads中。 然后使用ProcessBuilder類,在服務器上編譯並執行Java文件。 執行期間,我將JAVA程序的輸出重定向到output.txt。 該程序已編譯好。 但是發生的問題是在執行時,盡管創建了output.txt文件,但該文件為空。

這是執行代碼

public static boolean executeCode(int timeLimit,String fileName)
{
    fileName=fileName.substring(0,fileName.length()-5);  //to remove .java
    String commands[]={"CMD", "/C","cd C:\\uploads && java"+fileName+">output.txt"};
    ProcessBuilder p=new ProcessBuilder(commands);
    p.redirectErrorStream(true);
    Process process=null;
    boolean errCode=false;
    try {
        long start=System.nanoTime();
        process=p.start();
         errCode=process.waitFor(timeLimit,TimeUnit.MILLISECONDS); 
         long end=System.nanoTime();
         System.out.println("Duration="+(end-start));
        } catch (IOException e) {
        e.printStackTrace();
        }
        catch(InterruptedException e)
        {
            e.printStackTrace();
        }
    return errCode;
}

PS-當我僅創建用於執行相同操作的JAVA程序時,不會發生此問題。

如果您使用的是jdk 1.7,則可以嘗試如下操作:

public static boolean executeCode(int timeLimit,String fileName)
{
    String commands[]={"CMD", "/C","cd C:\\uploads && javac " + fileName};
    ProcessBuilder p=new ProcessBuilder(commands);
    p.redirectErrorStream(true);

    File output = new File("C:\\uploads\\output.txt");
    p.redirectOutput(output);

    ...

}

我不是控制台/ bash的高級用戶,但是您不錯過幾個空格嗎? 該行應如下所示:

String commands[]={"CMD", "/C","cd C:\\uploads && java "+fileName+" > output.txt"};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM