摘要:為了調試需要,需要把輸出的信息重定向到文件進行保留,同時為了方便,在上的輸出也得保留。在自定義的輸出流中把輸出的信息順手保存到文件上一下。
為了調試需要,需要把Java輸出的信息重定向到文件進行保留,同時為了方便,在Console上的輸出也得保留。
原理很簡單,就是自定義輸出流,并使用System.setOut和System.setErr進行設置。在自定義的輸出流中把輸出的信息順手保存到文件上一下。
自定義一個用于分發的輸出流:
DistributOutputStream.java
Javapublic class DistributOutputStream extends OutputStream { private OutputStream[] outputStreams = null; public DistributOutputStream(OutputStream[] outputStreams) { super(); this.outputStreams = outputStreams; } @Override public void write(int v) throws IOException { for (OutputStream os : outputStreams) { try { os.write(v); } catch (IOException e) { } } } @Override public void close() throws IOException { for (OutputStream os : outputStreams) { try { os.close(); } catch (IOException e) { } } } @Override public void flush() throws IOException { for (OutputStream os : outputStreams) { try { os.flush(); } catch (IOException e) { } } } }
自定義輸出流中只是重寫了write、flush和close方法,為了提高效率可以繼續重寫其他幾個寫多字節的write方法。所有這些方法都是對需要分發的輸出流進行的操作,用了try,但為了避免循環調用catch之后沒在打印信息了。
使用起來也很簡單:
Javatry { // 創建一個文件流 FileOutputStream fos = new FileOutputStream("console.log"); // 先保存原來的標準輸出 OutputStream cos = System.out; // 創建一個分發流分發到文件流和標準輸出 DistributOutputStream osc = new DistributOutputStream(new OutputStream[] { fos, cos }); // 分發流的打印方式 PrintStream ps = new PrintStream(osc); // 設置到Err和Out System.setErr(ps); System.setOut(ps); } catch (Exception e) { e.printStackTrace(); return; } // 不出意外的話Console和文件里面都有Hello World~了 System.out.println("Hello World~");
打好收工~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64237.html
摘要:第一步如何以最低價格快速買到阿里云服務器如果我是學生,我如何通過買到價值的服務答用購買云服務器是阿里云學生專屬活動。除阿里云外,大多數云服務器公司例如西部等同配置云服務器的價格都在左右。例如云服務器地址等。第一步:如何以最低價格快速買到阿里云服務器?1.1 如果我是學生,我如何通過¥9.9買到價值¥117的服務?答:用¥9.9購買云服務器ECS是阿里云學生專屬活動。首先,你需要在阿里云官網注...
摘要:首先,你需要在阿里云官網注冊賬號。然后在阿里云官網首頁點擊校園扶持,經學生認證后便可購買每月的特價云服務器。圖幕布拍照如果對備案還有疑問,請參考阿里云官方文檔首次備案圖文引導。具體操作方式請看阿里云官方介紹鏡像部署或一鍵安裝包部署。第一步:如何以最低價格快速買到阿里云服務器?1.1 如果我是學生,我如何通過¥9.9買到價值¥117的服務? 答:用¥9.9購買云服務器ECS是阿里云學生專屬活動...
摘要:首先,你需要在阿里云官網注冊賬號。然后在阿里云官網首頁點擊校園扶持,經學生認證后便可購買每月的特價云服務器。圖幕布拍照如果對備案還有疑問,請參考阿里云官方文檔首次備案圖文引導。具體操作方式請看阿里云官方介紹鏡像部署或一鍵安裝包部署。第一步:如何以最低價格快速買到阿里云服務器? 1.1 如果我是學生,我如何通過¥9.9買到價值¥117的服務? 答:用¥9.9購買云服務器ECS是阿里云學生專屬活...
摘要:首先,你需要在阿里云官網注冊賬號。然后在阿里云官網首頁點擊校園扶持,經學生認證后便可購買每月的特價云服務器。圖幕布拍照如果對備案還有疑問,請參考阿里云官方文檔首次備案圖文引導。具體操作方式請看阿里云官方介紹鏡像部署或一鍵安裝包部署。第一步:如何以最低價格快速買到阿里云服務器?1.1 如果我是學生,我如何通過¥9.9買到價值¥117的服務? 答:用¥9.9購買云服務器ECS是阿里云學生專屬活動...
摘要:一旦異常被拋出,就表明錯誤已無法挽回,也不能回來繼續執行。這種在編譯時被強制檢查的異常稱為被檢查的異常。通過獲取原始異常。構造器對于在構造階段可能會拋出異常,并要求清理的類,最安全的做法是使用嵌套的子句。 點擊進入我的博客 Java異常處理的目的在于通過使用少于目前數量的代碼來簡化大型、可靠的程序的生成,并且通過這種方式可以使你更自信:你的應用中沒有未處理的錯誤。 12.1 概念 異...
閱讀 3259·2021-11-15 11:37
閱讀 1065·2021-11-02 14:45
閱讀 3893·2021-09-04 16:48
閱讀 3569·2019-08-30 15:55
閱讀 748·2019-08-23 17:53
閱讀 994·2019-08-23 17:03
閱讀 2020·2019-08-23 16:43
閱讀 2183·2019-08-23 16:22