吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1293|回复: 4
收起左侧

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

[复制链接]
Cool_Breeze 发表于 2021-3-6 14:12
本帖最后由 Cool_Breeze 于 2021-3-18 20:39 编辑

[C#] 纯文本查看 复制代码
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[Size];
        
        // 储存剩余未知大小内容
        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();
    }
}


[C#] 纯文本查看 复制代码
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(); // 最后关闭文件流
    }    
}

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
kingaero + 2 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

田田爱崽崽 发表于 2021-3-6 14:18
老哥,能否帮我看一下我的帖子,求指导
https://www.52pojie.cn/thread-1384275-1-1.html
ljxpjpjljx 发表于 2021-3-6 14:48
 楼主| Cool_Breeze 发表于 2021-3-6 15:30
ljxpjpjljx 发表于 2021-3-6 14:48
感谢分享,C++的代码有吗?

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

到此一游,学习一下。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 07:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表