• C# 文件操作


        最近做中兴的程序设计竞赛中一道题,需要用到数据存储功能。每隔一段时间会收到一组数据,依次把这一组数据存储到文件中,但是需要设定一个值,该值表示能够存储的最大条数。如果达到这个条数之后,就像前覆盖一条记录,把新的存进去。这个值是中途可以更改的。

        于是思路就成了,删除第一条记录,再在文件末尾增加新的记录。

        首先声明一个list<int>保存每条记录的长度。

    List<int> Offsets = new List<int>(Properties.Settings.Default.InfoNumber);

        每次存储之前,把记录的长度添加到list的末尾。

    然后在添加之前,进行一个比较。

    代码
    byte[] datas = Encoding.ASCII.GetBytes(sb.ToString());
    int offset = 0;
    lock (LockInfoNumber)
    {
    while (Offsets.Count >= infoNumber)
    {
    offset
    += Offsets[0]; //获得第一个报文的长度
    Offsets.RemoveAt(0); //删除第一个报文
    }
    }

    if (offset != 0) //没有达到指定的数目
    {
    fs.Seek(offset, SeekOrigin.Begin);

    byte[] filedatas = new byte[fs.Length - offset];
    fs.Read(filedatas,
    0, filedatas.Length);

    fs.SetLength(
    0);//清楚原来文件的内容 (立即)
    fs.Seek(0, SeekOrigin.Begin);
    fs.Write(filedatas,
    0, filedatas.Length);
    fs.Write(datas,
    0, datas.Length);
    }
    else //达到指定的数量
    {
    fs.Seek(
    0, SeekOrigin.End);
    fs.Write(datas,
    0, datas.Length);
    }
    Offsets.Add(datas.Length);

     注意,文件不会自己清空自己的内容,于是清除内容需要用到SetLength(0)方法,这样就相当于,读取要保留的文件内容,清空文件,

    在文件头部开始写入新的内容。

  • 相关阅读:
    【转载】Java反射: 数组
    【转】Maven3把命令行创建的web工程转成Eclipse和IntelliJ Idea的工程
    (转载)Sumblime Text 2 常用插件以及安装方法
    [转]h5页面测试总结
    maven学习讲解
    struts2权威指南学习笔记:struts2引入自定义库
    《Struts2.x权威指南》学习笔记2
    《Struts2.x权威指南》学习笔记1
    secureCRT 如何上传下载文件
    zabbix 4.2 发送警告邮件Python脚本
  • 原文地址:https://www.cnblogs.com/miniwiki/p/1761564.html
Copyright © 2020-2023  润新知