C#文件相关操作

这篇博客详细介绍了如何在C#中进行文件操作,包括打开文件并获取路径、导出图片、将文件转换为二进制、写入二进制流到新文件、以及图像和字节之间的相互转换等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开文件,并返回文件路径

public string OpenFile(string strFilter)
        {
            string strFileName = string.Empty;

            OpenFileDialog openFile = new OpenFileDialog();
            openFile.Filter = strFilter;
            openFile.FilterIndex = 1;
            if (openFile.ShowDialog() == DialogResult.OK)
            {
                strFileName = openFile.FileName;
            }

            return strFileName;
        }

导出图片

public void ExportPic(PictureBox picBox)
        {
            SaveFileDialog saveFile = new SaveFileDialog();
            saveFile.Filter = "图像文件(*.PNG)|*.PNG|所有文件(*.*)|*.*";
            if (saveFile.ShowDialog() == DialogResult.OK)
            {
                string fileName = saveFile.FileName;
                string strExtension = Path.GetExtension(fileName);
                switch (strExtension)
                {
                    case ".png":
                        picBox.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
                        break;
                    case ".PNG":
                        picBox.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
                        break;
                    case ".jpg":
                        picBox.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                        break;
                    case ".jpeg":
                        picBox.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                        break;
                    default:
                        break;
                }
            }
        }

将文件转换为二进制

public byte[] FileToBytes(string filePath)
        {
            FileInfo fileInfo = new FileInfo(filePath);
            byte[] buffer = new byte[fileInfo.Length];
            FileStream fs = fileInfo.OpenRead();
            fs.Read(buffer, 0, Convert.ToInt32(fileInfo.Length));
            fs.Close();
            return buffer;
        }

将给定二进制流写入一个新文件

public void CreateFile(byte[] fileBuffer,string newFilePath)
        {
            if (File.Exists(newFilePath))
            {
                File.Delete(newFilePath);
            }
            FileStream fs = new FileStream(newFilePath, FileMode.CreateNew);
            BinaryWriter bw = new BinaryWriter(fs);
            bw.Write(fileBuffer, 0, fileBuffer.Length);
            bw.Close();
            fs.Close();
        }

字节转图像

public Image Bytes2Img(byte[] buffer)
        {
            MemoryStream ms = new MemoryStream(buffer);
            ms.Position = 0;
            Image img = Image.FromStream(ms);
            ms.Close();
            return img;
        }

图片转字节

public byte[] Img2Bytes(Image img)
        {
            byte[] bytes = null;
            MemoryStream ms = new MemoryStream();
            img.Save(ms, ImageFormat.Png);
            bytes = ms.GetBuffer();
            ms.Close();
            return bytes;
        }

从图片文件路径转字节

public byte[] ImgFile2Bytes(string strPicFile)
        {
            if (string.IsNullOrEmpty(strPicFile)) return null;

            byte[] bytes = null;
            MemoryStream ms = new MemoryStream();
            Image img = Image.FromFile(strPicFile);

            img.Save(ms, ImageFormat.Png);
            bytes = ms.GetBuffer();
            ms.Close();
            return bytes;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值