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   

 

posted @   一杯水M  阅读(1558)  评论(0)    收藏  举报
编辑推荐:
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 电商平台中订单未支付过期如何实现自动关单?
阅读排行:
· 精选 4 款免费且实用的数据库管理工具,程序员必备!
· Cursor:一个让程序员“失业”的AI代码搭子
· 博客园2025新款「AI繁忙」系列T恤上架
· .NET 阻止Windows关机以及阻止失败的一些原因
· 航天二院校园招聘面试记录:二八三厂
点击右上角即可分享
微信分享提示