.NET Core中向已存在文件的特定位置写入数据
本例使用.NET Core向一个文本文件中的特定位置写入数据,来模拟文件上传中的断点续传是如何在服务器端实现的。
新建一个.NET Core控制台项目FileContinueToWrite,其Program.cs的源代码如下:
using System; using System.Text; using System.IO; namespace FileContinueToWrite { class Program { /// <summary> /// GenerateFile方法用于生成文本文件Demo.txt,写入初始字符串"123456789" /// </summary> static void GenerateFile() { var filePath = AppDomain.CurrentDomain.BaseDirectory + @"File\Demo.txt"; //如果文本文件Demo.txt已经存在,则将其删除 if (File.Exists(filePath)) { File.Delete(filePath); } //创建文本文件Demo.txt,并写入初始字符串"123456789" using (var fileStream = new FileStream(filePath, FileMode.CreateNew)) { string content = "123456789";//向文本文件Demo.txt中写入的内容为"123456789" byte[] data = Encoding.ASCII.GetBytes(content);//使用ASCII码将字符串转换为字节数据,所以一个字符占用一个字节 fileStream.Write(data, 0, data.Length); } } /// <summary> /// AppendCharsAfter5方法打开文本文件Demo.txt,从文件流第5个字节后开始写入字符串"ABC" /// </summary> static void AppendCharsAfter5() { var filePath = AppDomain.CurrentDomain.BaseDirectory + @"File\Demo.txt"; //由于我们是在已经存在的文本文件Demo.txt中写入数据,并且要从文件流第5个字节后开始写入,所以下面要设置FileStream为FileMode.Open和FileAccess.ReadWrite,这样才能从文本文件Demo.txt中第5个字节后开始写入数据 using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite)) { string content = "ABC";//向文本文件Demo.txt中写入的内容为"ABC" byte[] data = Encoding.ASCII.GetBytes(content);//使用ASCII码将字符串转换为字节数据,所以一个字符占用一个字节 fileStream.Position = 5;//设置FileStream的Position为5,从文本文件Demo.txt中第5个字节后开始写入新的字符串"ABC"。由于执行完GenerateFile方法后,文本文件Demo.txt的内容为"123456789",所以第5个字节也就是"5"这个字符,所以将"ABC"写入第5个字节后,相当于是在"12345"后写入"ABC",原本的"678"会被覆盖为"ABC" fileStream.Write(data, 0, data.Length);//所以这里写入字符串"ABC"到文本文件Demo.txt后,Demo.txt的内容为"12345ABC9" } } static void Main(string[] args) { GenerateFile(); Console.WriteLine("Press any key to run AppendCharsAfter5()..."); Console.ReadKey(); AppendCharsAfter5(); Console.WriteLine("Press any key to end..."); Console.ReadKey(); } } }
上面的代码会先运行GenerateFile方法生成一个文本文件Demo.txt,并写入初始字符串"123456789",然后运行AppendCharsAfter5方法,向文本文件Demo.txt中的第5个字节后写入字符串"ABC"。
GenerateFile方法运行后,文本文件Demo.txt的内容如下:
AppendCharsAfter5方法运行后,文本文件Demo.txt的内容如下:
分类:
.Net Core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2015-01-16 警惕ASP.NET MVC中的ValidateInputAttribute