本例使用.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 = "";//向文本文件Demo.txt中写入的内容为"123456789"
byte[] data = Encoding.ASCII.GetBytes(content);//使用ASCII码将字符串转换为字节数据,所以一个字符占用一个字节 fileStream.Write(data, , 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 = ;//设置FileStream的Position为5,从文本文件Demo.txt中第5个字节后开始写入新的字符串"ABC"。由于执行完GenerateFile方法后,文本文件Demo.txt的内容为"123456789",所以第5个字节也就是"5"这个字符,所以将"ABC"写入第5个字节后,相当于是在"12345"后写入"ABC",原本的"678"会被覆盖为"ABC"
fileStream.Write(data, , 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中向已存在文件的特定位置写入数据的更多相关文章

  1. 【Linux】在文件的指定位置插入数据

    今天遇到一个似乎很棘手的问题,要在文件的中间,插入几条配置 这里就以my.cnf这个文件为例 1 [mysqld] 2 datadir=/var/lib/mysql 3 socket=/var/lib ...

  2. python新建txt文件,并逐行写入数据

    #coding=utf-8 txtName = "codingWord.txt"f=file(txtName, "a+")for i in range(1,10 ...

  3. [小技巧]ASP.NET Core中如何预压缩静态文件

    原文地址:Pre-compressed static files with ASP.NET Core 作者:Gunnar Peipman 译者:Lamond Lu 译文:https://www.cnb ...

  4. 在 .NET Core 中使用 DiagnosticSource 记录跟踪信息

    前言 最新一直在忙着项目上的事情,很久没有写博客了,在这里对关注我的粉丝们说声抱歉,后面我可能更多的分享我们在微服务落地的过程中的一些经验.那么今天给大家讲一下在 .NET Core 2 中引入的全新 ...

  5. 在 .NET Core 中使用 Diagnostics (Diagnostic Source) 记录跟踪信息

    前言 最新一直在忙着项目上的事情,很久没有写博客了,在这里对关注我的粉丝们说声抱歉,后面我可能更多的分享我们在微服务落地的过程中的一些经验.那么今天给大家讲一下在 .NET Core 2 中引入的全新 ...

  6. .Net Core中简单使用MongoDB

    MongoDB 是由C++语言编写的,是一个基于分布式且面向文档存储的开源数据库系统. 下载地址: https://www.mongodb.com/download-center/community ...

  7. VB中后台打开Excel文件实现代码

    某些时候需要打开Excel文件来获取或者写入数据,但又不希望跳出打开的Excel文件窗口,可以用下面的代码: Dim eb As New excel.Application, wb as excel. ...

  8. 2、FileOutputStream--->文件输出流(向文件写入数据)

    Api介绍 定义 FileOutputStream 用于写入诸如图像数据之类的原始字节的流.要写入字符流,请考虑使用 FileWriter. 构造方法 FileOutputStream(File fi ...

  9. ASP.NET Core 中文文档 第三章 原理(3)静态文件处理

    原文:Working with Static Files 作者:Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:谢炀(kiler398).许登洋(Seay).孟帅洋(书缘) 静态文 ...

随机推荐

  1. SpringMVC—Struts2拦截器学习网址整理

    引自:http://blog.csdn.net/wp1603710463/article/details/49982683 SpringMVC—Struts2拦截器学习网址整理 最近项目中遇到权限相关 ...

  2. 【Redis】Redis学习(二) master/slave、sentinel、Cluster简单总结

    项目中用到Redis,所以准备学习一下,感觉Redis的概念还是很多的,什么主从模式.sentinel模式.集群模式的,一下子都晕了,我觉得还是有必要先理清这些基本概念再说. 一.单节点实例 单节点实 ...

  3. 【已解决】mac上appium报错:“Could not find aapt Please set the ANDROID_HOME environment variable with the Android SDK root directory path”

    按照网上教程配置完appium环境后,真机跑自动化过程,遇到如下报错: appium报错如下: [ADB] Checking whether aapt is present [ADB] The AND ...

  4. 用例设计之APP用例覆盖准则

    基本原则 本文主要讨论APP功能用例的覆盖,基本原则: 用户场景闭环(从哪来到哪去) 遍历所有的实现逻辑路径 需求点覆盖 覆盖维度 APP功能用例设计主要使用传统的黑盒用例设计方法.同时,作为移动AP ...

  5. Problem2-Project Euler

    Even Fibonacci numbers   Each new term in the Fibonacci sequence is generated by adding the previous ...

  6. c#创建文件( File.Create() )后对文件写操作出错的分析

    在C#中,使用system.IO.File.Create()创建完一个文件之后,如果需要对这个文件进行写操作,会出现错误,提示你“这个文件正在被使用”. 原因是System.IO.File.Creat ...

  7. TruncateATable 清除一张表

    当我们想删除一张表的全部数据时,我们可以使用 truncate 关键字,但如果要删除的表的主键被引用了,那么就无法执行语句. 1.制作清除数据的工具 ,在 nuget 控制台中输入 Install-P ...

  8. 清理 Xcode 10

    1,清理 ~/Library/Developer/CoreSimulator/Devices说明:该目录存放当前的所有模拟器,每个标识符代表一台机器,清理掉避免存在旧版本的模拟器缓存 执行: 关闭模拟 ...

  9. arcgis pro2.3教程与问题集持续更新(一)

    Arcgis pro 2.3是64位的不支持mdb 数据库,因为微软没有开放Access64的接口,所以不能支持个人地理数据库.mdb(Microsoft Database). arcgis pro ...

  10. Spring Boot 的 Security 安全控制

    Spring Security 是一个强大且高度可定制的身份验证和访问控制框架,完全基于 Spring 的应用程序的标准,Spring Security 为基于 Java EE 的企业应用程序提供了一 ...