当前位置: 首页 > news >正文

C#将Console写至文件,且文件固定最大长度

参考文章
将C#的Console.Write同步到控制台和log文件输出

业务需求

在生产环境中,控制台窗口不便展示出来。
为了在生产环境中,完整记录控制台应用的输出,选择将其输出到文件中。
但是,一次性存储所有输出的话,文件会很大,阅读体验不佳。
故而本项目实现:

将控制台输出到文件。
限定输出文件的最大长度。

代码

using System;
using System.IO;
using System.Text;
class Program
{static void Main(){Console.SetOut(new WrtToFile(@"D:\LearnOutput.txt", 15));Console.WriteLine("testing 1-2-301");Console.WriteLine("t");Console.WriteLine("testing 4-5-6712");//Console.ReadLine();}public class WrtToFile : TextWriter{private int maxLen = 0;                 // 设定的文件最大保存长度private int fileCount = 1;              // 当前操作第几个文件,文件计数private int wordCount = 0;              // 当前文件的字数private string pathFormat = null;       // 可以根据文件计数打开的文件路径,待填充private string path = null;             // 文件路径,已填充private StreamWriter fileWriter = null; // 文件写入对象/// <summary>/// </summary>/// <param name="defaultPath">文件路径</param>/// <param name="maxLen">默认最多65535个字符,约131M大小</param>public WrtToFile(string defaultPath, int maxLen = UInt16.MaxValue){pathFormat = Path.Combine(Path.GetDirectoryName(defaultPath), Path.GetFileNameWithoutExtension(defaultPath) + "{0}" + Path.GetExtension(defaultPath));this.maxLen = maxLen;}/// <summary>/// 选择输出目标文件/// </summary>/// <param name="length">待输出字符串的长度</param>public void SelectTarget(int length){if (length + wordCount > maxLen || 0 == wordCount)    // 满了新建,或者第一次建{try{if (!(fileWriter is null)){	// 如果有文件正在使用,则关闭之fileWriter.Close();fileWriter.Dispose();}while (File.Exists(path = string.Format(pathFormat, fileCount)))fileCount++;            // 新建文件名后缀wordCount = 0;              // 清空字长// 创建文件流fileWriter = new StreamWriter(path, true, Encoding.UTF8) { AutoFlush = true };}catch { }}wordCount += length;       // 追加}/// <summary>/// 覆盖写的方法/// </summary>/// <param name="content"></param>public override void WriteLine(string content){SelectTarget(content.Length);fileWriter.WriteLine(content);}/// <summary>/// 需实现抽象类的此方法/// </summary>public override Encoding Encoding{get { return fileWriter.Encoding; }}}
}

第一次运行结果

三个文件各一行
在这里插入图片描述

第二次运行结果

六个文件各一行
在这里插入图片描述

http://www.lryc.cn/news/334809.html

相关文章:

  • 《CSS 知识点》仅在文本有省略号时添加 tip 信息
  • 彩虹聚合DNS管理系统v1.0全新发布
  • 3.10 Python数据类型转换
  • Kotlin基础学习
  • 配置交换机 SSH 管理和端口安全——实验1:配置交换机基本安全和 SSH管理
  • 海山数据库(He3DB)原理剖析:浅析Doris跨源分析能力
  • 第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 题解
  • 20240324-1-集成学习面试题EnsembleLearning
  • 默克尔(Merkle)树 - 原理及用途
  • 设计模式:迭代器模式
  • Navicat Premium 16常用快捷键
  • LeetCode笔记——1042.不邻接植花
  • Centos7搭建 Skywalking 单机版
  • 定制您的设备体验:如何更改Android启动动画
  • Docker日常系列
  • Midjourney该怎么用?从零基础到落地实践
  • K8S:常用资源对象操作
  • 算法刷题应用知识补充--基础算法、数据结构篇
  • ngnix的反向代理是什么?有什么作用?
  • Windows程序设计课程作业-1
  • 2024年河北省网络建设与运维-省赛-nginx 和tomcat 服务服务步骤
  • CentOS下部署ftp服务
  • 伦敦银几点开盘?为什么交易不了?
  • 快手开放平台对接内容管理demo
  • 2024年32款数据分析工具分五大类总览
  • WPS的JS宏如何批量实现文字的超链接
  • 0203逆矩阵-矩阵及其运算-线性代数
  • 加州大学欧文分校英语基础语法专项课程03:Simple Past Tense 学习笔记(完结)
  • 基于Java微信小程序的医院挂号小程序,附源码
  • 7.网络编程-安全