Cool_Breeze 发表于 2021-3-6 14:12

C# 学习笔记 向文件中插入指定内容

本帖最后由 Cool_Breeze 于 2021-3-18 20:39 编辑

using System;
using System.Collections.Generic;
using System.IO;

class CreateFile
{
    static void Main()
    {
      
      string FileName = @"d:\csTest.txt";
      
      // FileMode.Open 打开一个已有的文件。如果文件不存在,则抛出异常。
      // 访问模式:读取和写入
      // FileShare.None 文件将被保护(不能共享),只能当前程序使用,其他程序打开次文件,提示被另一个程序占用
      FileStream f = new FileStream(FileName, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
      
      // checked
      // {
            // for (byte i = 1; i <= 254 ; i++ )
            // {
                // if (i % 10 == 0)
                // {
                  // f.Write(new byte[]{(byte)'\r',(byte)'\n'}, 0, 2);
                // }
                // f.WriteByte(i);
            // }
      // }
      
      
      // 指定读取内容大小
      var Size = 30;
      // 储存指定内容
      byte[] buffData = new byte;
      
      // 储存剩余未知大小内容
      List<byte> buffDataSurplus = new List<byte>();
      
      // 从文件当前位置读取指定大小内容到 buffData
      f.Read(buffData, 0, Size);
      
      
      int temp = default(int);
      
      // 循环读取每个字节类容,直到末尾
      while (true)
      {
            // 接受每一个字节内容
            temp = f.ReadByte();
            if (temp == -1) break;// 表示到末尾
            buffDataSurplus.Add((byte)temp); // 加入列表中
      }
      
      // 恢复文件指针,指向 SeekOrigin.Begin(文件首) 0 个字节处
      f.Seek(0, SeekOrigin.Begin);
      
      // 向文件写入 buffData 数组里面的值
      f.Write(buffData, 0, Size);
      
      //插入指定内容
      for (byte i = 0; i<30; i++)
            f.WriteByte(99);
      
      // 将剩余字符再写会文件
      foreach (var b in buffDataSurplus)
            f.WriteByte(b);
      // Console.ReadLine();
    }
}

using System;
using System.IO;
using System.Collections.Generic;

class Test
{
    static void Main()
    {
       string file = @"D:\GIN\c#\Exercise\Regex.txt"; // 文件绝对路径
      
       FileStream f = new FileStream(file, FileMode.Open, FileAccess.ReadWrite); // 打开文件
       StreamWriter fw = new StreamWriter(f); // 写入文本 将文件对象转换一下,方便后面操作
       StreamReader fr = new StreamReader(f); // 读取文本
      
       string OldStr = "10天,";
       string NewStr = OldStr + "这是替换后的字符串,";
       string ttent;
       List<string> array = new List<string>();
       int flag;
       while (true)
       {
         ttent = fr.ReadLine();
         if (ttent == null) break; // 表示读取到末尾完成
         flag = ttent.IndexOf(OldStr); // 匹配字符串
         if (flag != -1)
         {
                ttent = ttent.Replace(OldStr, NewStr); // 将指定字符串替换为插入字符串
         }
            array.Add(ttent); // 将文本内容存入容器
       }
      
       f.Seek(0, 0); // 将文件指针指向开始,覆盖写入文件
      
       foreach (var n in array) // 从容器里面取出文本内容
       {
         fw.WriteLine(n); // 写入一行内容
       }
      
       fw.Close();
       fr.Close();
       f.Close(); // 最后关闭文件流
    }   
}

田田爱崽崽 发表于 2021-3-6 14:18

老哥,能否帮我看一下我的帖子,求指导
https://www.52pojie.cn/thread-1384275-1-1.html

ljxpjpjljx 发表于 2021-3-6 14:48

感谢分享,C++的代码有吗?

Cool_Breeze 发表于 2021-3-6 15:30

ljxpjpjljx 发表于 2021-3-6 14:48
感谢分享,C++的代码有吗?

不好意思。 没有学过C++,但是方法是通用的:
把要出入之前和之后的内容分别保存下来,然后按顺序,之前的内容,你的内容,之后的内容写入文件就行了。可能操作的细节不一样!

Z19850629 发表于 2021-3-6 17:02


到此一游,学习一下。
页: [1]
查看完整版本: C# 学习笔记 向文件中插入指定内容