C# File流操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #region 文件读出 private void button1_Click( object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); if (! string .IsNullOrEmpty(ofd.FileName)) { //1.创建1个文件流对象,并给这个文件流对象指定操作的文件(路径),还有指定操作方式 FileStream stream = new FileStream(ofd.FileName, FileMode.Open); //2.准备1个Byte数组,以供文件流对象读取数据并放到这个数组中 byte [] buffer = new byte [1024 * 1024]; //3.调用文件流的读数据方法,将读出来的字节放入buffer数组中 stream.Read(buffer, 0, buffer.Length); //4.将字节buffer数组已指定的编码转换为字符串【Encoding.Default.GetString(buffer);】 string content = Encoding.Default.GetString(buffer); //5.关闭文件流 stream.Dispose(); txtContent.Text = content; } } #endregion |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #region 文件流写入==保存 private void button2_Click( object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); DialogResult res = sfd.ShowDialog(); //弹出1个文件保存窗口 if (res == DialogResult.OK) { FileStream stream = new FileStream(sfd.FileName, FileMode.Create); //将字符串以指定的编码转换为字节数组byte[](二进制) byte [] buffer = Encoding.UTF8.GetBytes(txtContent.Text); stream.Write(buffer, 0, buffer.Length); stream.Dispose(); } } #endregion |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #region 拷贝操作 private void button3_Click( object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); DialogResult res = ofd.ShowDialog(); if (res == DialogResult.OK) { if (! string .IsNullOrEmpty(ofd.FileName)) { //1.创建读入文件流对象 FileStream streamRead = new FileStream(ofd.FileName, FileMode.Open); //2.创建1个字节数组,用于接收文件流对象读操作文件值 byte [] data = new byte [1024 * 1024]; //1M int length = 0; SaveFileDialog sfd = new SaveFileDialog(); DialogResult sres = sfd.ShowDialog(); if (sres == DialogResult.OK) { if (! string .IsNullOrEmpty(ofd.FileName)) { FileStream streamWrite = new FileStream(sfd.FileName, FileMode.Create); do { //3.文件流读方法的参数1.data-文件流读出数据要存的地方,2. 0--从什么位置读,3. data.Length--1次读多少字节数据 //3.1 Read方法的返回值是一个int类型的,代表他真实读取 字节数据的长度, length = streamRead.Read(data, 0, data.Length); //大文件读入时候,我们定义字节长度的可能会有限,如果文件超大,要接收文件流对象的Read()方法,会返回读入的实际长度 //加密 和解密 for ( int i = 0; i < length; i++) { data[i] = ( byte )(255 - data[i]); } streamWrite.Write(data, 0, length); } while (length == data.Length); //如果实际写入长度等于我们设定的长度,有两种情况1.文件正好是我们设定的长度2.文件超大只上传了截取的一部分 } } } } } #endregion |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 电商平台中订单未支付过期如何实现自动关单?
· 精选 4 款免费且实用的数据库管理工具,程序员必备!
· Cursor:一个让程序员“失业”的AI代码搭子
· 博客园2025新款「AI繁忙」系列T恤上架
· .NET 阻止Windows关机以及阻止失败的一些原因
· 航天二院校园招聘面试记录:二八三厂