[英]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.