亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

執行命令時如何獲取所有錯誤?

執行命令時如何獲取所有錯誤?

守著星空守著你 2022-11-02 16:41:45
我正在開發一個 java 程序,在程序的某個時刻我需要執行一些命令并顯示該命令返回的所有錯誤。但我只能展示第一個。這是我的代碼:String[] comando = {mql,"-c",cmd};File errorsFile = new File("C:\\Users\\Administrator2\\Desktop\\errors.txt");ProcessBuilder pb = new ProcessBuilder(comando);pb.redirectError(errorsFile);Process p = pb.start();p.waitFor();String r = errorsFile.getAbsolutePath();Path ruta = Paths.get(r);Charset charset = Charset.forName("ISO-8859-1");List<String> fileContents = Files.readAllLines(ruta,charset);if (fileContents.size()>0){      int cont = 1;      for(String str : fileContents){              System.out.println("Error"+cont);              System.out.println("\t"+str);              cont++;      }}else{     //other code}在這種情況下,我知道有多個錯誤,所以我希望有多個輸出,但正如您在照片中看到的那樣,我只得到一個。
查看完整描述

2 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

我認為這里的關鍵可能是 ProcessBuilder 的redirectError(File file)實際上是redirectError (Redirect.to(file)).

來自 Oracle 的 ProcessBuilder 類文檔:

這是一種方便的方法。調用redirectError(file) 形式的行為與調用redirectError (Redirect.to(file)) 完全相同。

我見過的大多數例子都是使用Redirect.appendTo(File file)而不是Redirect.to(file). 文檔可能會解釋原因。

來自 Oracle 的 ProcessBuilder.Redirect 文檔:

public static ProcessBuilder.Redirect to(File file) 返回重定向以寫入指定文件。如果子進程啟動時指定的文件存在,則其之前的內容將被丟棄。

public static ProcessBuilder.Redirect appendTo(File file) 返回重定向以附加到指定文件。每個寫操作首先將位置推進到文件末尾,然后寫入請求的數據。

我會嘗試更換

pb.redirectError(errorsFile)

pb.redirectError(Redirect.appendTo(errorsFile))

看看你是否能得到更多的線路。


查看完整回答
反對 回復 2022-11-02
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

您是否調試并檢查了 fileContents 的內容?

編輯:對不起,它應該是一個評論,但還不能這樣做:(


查看完整回答
反對 回復 2022-11-02
  • 2 回答
  • 0 關注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號