Guten Tag! 問題是:我有一些代碼在終端(命令行窗口)上通過Console
類打印一些文本消息。我需要將這些信息放在兩個「容器」中 - 終端和文本文件。 有沒有辦法將輸出流添加到Console
類,以使其不僅在終端上輸出數據? 如果我不需要更改現有的代碼太多(有很多地方使用Console.Write()
和Console.WriteLine()
),那就太好了。在控制檯和文件上同時寫文本
回答
這不是一個完整的實現,但它應該足以讓你開始沿着你尋找的路徑。
class Program
{
static void Main(string[] args)
{
DualOut.Init();
Console.WriteLine("Hello");
Console.ReadLine();
}
}
public static class DualOut
{
private static TextWriter _current;
private class OutputWriter : TextWriter
{
public override Encoding Encoding
{
get
{
return _current.Encoding;
}
}
public override void WriteLine(string value)
{
_current.WriteLine(value);
File.WriteAllLines("Output.txt", new string[] { value });
}
}
public static void Init()
{
_current = Console.Out;
Console.SetOut(new OutputWriter());
}
}
如果你運行這段代碼,你會看到「你好」被打印到控制檯和文件「Output.txt的」
如果不更改代碼,則無法執行此操作。只需創建另一個類,例如「MyConsole」,並向其添加靜態方法「Write()」和「WriteLine()」。從您創建的方法內部調用Console.Write()
和Console.WriteLine()
方法。也調用從您的方法向文件寫入文本的方法。然後使用MyConsole
類而不是Console
作爲輸出數據。 Visual Studio查找/替換功能將幫助您更改代碼。
您應該使用StreamWriter
。它需要最少的附加代碼。 按照這個例子,它會工作。
您需要輸入「using System.IO」才能使此代碼正常工作。不要忘記寫它。
「YourTextFile.txt」需要.txt。
爲了在您的文本文件中看到結果,您需要轉到計算機中的實際文件夾,然後從那裏打開文本文件。 Visual Studio中的文本文件將顯示爲空。
(如c:/documents/visualstudio/projects/ConsoleApplication1/bin/debug/YourTextFile.txt)
解決方案 先在Visual Studio中的文本文件YourTextFile.txt 。然後在右側的解決方案資源管理器菜單中,單擊YourTextFile以查看解決方案資源管理器下的屬性。將「複製到輸出目錄」屬性從「不復制」更改爲「複製始終」。 (這是絕對必須的)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Answer
{
static void Main(string[] args)
{
string text = "This text will appear on your console and be saved in the txt file";
Console.WriteLine(text);
StreamWriter saveText = new StreamWriter("YourTextFile.txt");
saveText.WriteLine(text);
saveText.Close();
Console.ReadLine();
}
}
}
這應該做的工作。我不知道你在控制檯中的輸出是什麼樣的,但是如果它不只是一行,並且有多個Console.Writelines輸出到控制檯,那麼你可以使用while
和if
來檢查每一行控制檯,如果它不是null
寫出來。例如while (line != null)
其次if (line != null)
(假設你設置「線」等於你的控制檯的輸出)
感謝您的答覆,但我認爲你還沒有抓住這一點。看看iamkrillin的回答 –
@ user2123007啊,好的。那麼你應該將自己的答案標記爲問題的解決方案。否則,人們會認爲答案不是你想要的。問候 –
- 1. 爲什麼在txt文件上寫入與控制檯不同?
- 2. log4j2不寫入控制檯和文件
- 3. 無法在文本文件中編寫控制檯輸出
- 4. 輸出到控制檯和文件同時在Windows提示
- 5. 將iPhone上的stderr寫入文件和控制檯
- 6. 在.NET中同時讀寫控制檯
- 7. 長時間寫入控制檯和日誌文件(Python)
- 8. VB控制檯模式文本文件
- 9. 如何在控制檯上寫入大文本?
- 10. 從java中將控制檯輸出寫入文本文件
- 11. 將Ruby控制檯輸出寫入文本文件
- 12. 寫控制檯輸出到.txt文件
- 13. 寫入控制檯或文件蟒蛇
- 14. 寫控制檯輸出到文件
- 15. 寫出到控制檯以及文件
- 16. 將控制檯線寫入文件
- 17. 如何將日誌消息同時寫入日誌文件和控制檯?
- 18. 如何將控制檯文本複製到文本文件?
- 19. process.waitfor()和BufferReader未在控制檯中寫入完整文件
- 20. 從多臺計算機同時寫入文本文件
- 21. 在寫入文件後無法在控制檯中寫入
- 22. 在控制檯上顯示文本文件的特定行 - 批處理文件
- 23. 編輯64位Windows控制檯上的文本文件
- 24. 涉及二進制和文本文件時的版本控制?
- 25. Windows控制檯和Qt Unicode文本
- 26. 在tcl腳本中,我該如何使用puts將字符串同時寫入控制檯和文件?
- 27. 控制檯式的文本控制?
- 28. Java控制檯輸出 - 文件和控制檯BOTH
- 29. 同步寫入控制檯
- 30. 德爾福5 WriteLn控制檯和文本文件
這真的是我尋找 – aminvincent