zoukankan      html  css  js  c++  java
  • C# File流操作

           #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
    
            #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    
    
            #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    
    
  • 相关阅读:
    3.live555源码分析----延时队列
    RTP包的结构
    2.live555源码分析----服务端doEventLoop()函数分析
    1.live555源码分析----RSTPServer创建过程分析
    RTSP协议介绍 (转)
    搭建最简单的流媒体系统(服务器和客户端)
    谈一谈 MPU6050 姿态融合(转)
    Nginx的优化
    LAMP与LNMP加速与缓存优化
    Nginx在LNMP架构中的作用与虚拟主机配置
  • 原文地址:https://www.cnblogs.com/WarBlog/p/5826647.html
Copyright © 2011-2022 走看看