操作文件常用的方法
/// <summary> /// 文件转byte[] /// </summary> /// <param name="Path">绝对路径</param> /// <returns>byte[]</returns> public static byte[] FileToBytes(string Path) { if (!System.IO.File.Exists(Path)) return new byte[0]; FileInfo fi = new FileInfo(Path); byte[] buff = new byte[fi.Length]; FileStream fs = fi.OpenRead(); fs.Read(buff, 0, Convert.ToInt32(fs.Length)); fs.Close(); return buff; } /// <summary> /// 文件转Base64 /// </summary> /// <param name="Path">绝对路径</param> /// <returns>Base64</returns> public static string FileToBase64(string Path) { if (!System.IO.File.Exists(Path)) return string.Empty; FileInfo fi = new FileInfo(Path); byte[] buff = new byte[fi.Length]; FileStream fs = fi.OpenRead(); fs.Read(buff, 0, Convert.ToInt32(fs.Length)); fs.Close(); return BytesToBase64(buff); } /// <summary> /// byte[]转Base64 /// </summary> /// <param name="buff">byte[]</param> /// <returns>转Base64</returns> public static string BytesToBase64(byte[] buff) { return System.Text.Encoding.UTF8.GetString(buff); } /// <summary> /// Base64转byte[] /// </summary> /// <param name="Base64">转Base64</param> /// <returns>byte[]</returns> public static byte[] Base64ToBytes(string Base64) { return System.Text.Encoding.UTF8.GetBytes(Base64); } /// <summary> /// byte[]转文件保存指定地址 /// </summary> /// <param name="buff">byte数组</param> /// <param name="SavePath">保存地址</param> /// <param name="FileName">文件名</param> /// <param name="Open">是否打开文件</param> public static void BytesToFile(byte[] buff, string SavePath, string FileName, bool Open = false) { //如果不存在就创建Enclosure文件夹 if (Directory.Exists(SavePath) == false) Directory.CreateDirectory(SavePath); if (System.IO.File.Exists(SavePath + @"\" + FileName)) System.IO.File.Delete(SavePath + @"\" + FileName); FileStream fs = new FileStream(SavePath + @"\" + FileName, FileMode.CreateNew); BinaryWriter bw = new BinaryWriter(fs); bw.Write(buff, 0, buff.Length); bw.Close(); fs.Close(); if (Open) { //创建要运行的文件或者程序 var startfile = new ProcessStartInfo { FileName = SavePath + @"\" + FileName,//文件完全路径 WindowStyle = ProcessWindowStyle.Normal,//Windows窗口样式 UseShellExecute = true//为true,则用默认的打开方式打开 }; //创建Process命令 var cmd = new Process(); cmd.StartInfo = startfile; cmd.Start(); //打开文件 } } /// <summary> /// Base64转文件保存指定地址 /// </summary> /// <param name="Base64">Base64</param> /// <param name="SavePath">保存地址</param> /// <param name="FileName">文件名</param> public static void Base64ToFile(string Base64, string SavePath, string FileName, bool Open = false) { //如果不存在就创建Enclosure文件夹 if (Directory.Exists(SavePath) == false) Directory.CreateDirectory(SavePath); if (System.IO.File.Exists(SavePath + @"\" + FileName)) System.IO.File.Delete(SavePath + @"\" + FileName); byte[] buff = Base64ToBytes(Base64); FileStream fs = new FileStream(SavePath + @"\" + FileName, FileMode.CreateNew); BinaryWriter bw = new BinaryWriter(fs); bw.Write(buff, 0, buff.Length); bw.Close(); fs.Close(); if (Open) { //创建要运行的文件或者程序 var startfile = new ProcessStartInfo { FileName = SavePath + @"\" + FileName,//文件完全路径 WindowStyle = ProcessWindowStyle.Normal,//Windows窗口样式 UseShellExecute = true//为true,则用默认的打开方式打开 }; //创建Process命令 var cmd = new Process(); cmd.StartInfo = startfile; cmd.Start(); //打开文件 } } /// <summary> /// Stream转File /// </summary> /// <param name="stream">Stream</param> /// <param name="fileName">绝对路径</param> public static void StreamToFile(Stream stream, string SavePath, string FileName, bool Open = false) { //如果不存在就创建Enclosure文件夹 if (Directory.Exists(SavePath) == false) Directory.CreateDirectory(SavePath); if (System.IO.File.Exists(SavePath + @"\" + FileName)) System.IO.File.Delete(SavePath + @"\" + FileName); // 把 Stream 转换成 byte[] byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); // 设置当前流的位置为流的开始 stream.Seek(0, SeekOrigin.Begin); // 把 byte[] 写入文件 FileStream fs = new FileStream(SavePath + @"\" + FileName, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); bw.Write(bytes); bw.Close(); fs.Close(); if (Open) { //创建要运行的文件或者程序 var startfile = new ProcessStartInfo { FileName = SavePath + @"\" + FileName,//文件完全路径 WindowStyle = ProcessWindowStyle.Normal,//Windows窗口样式 UseShellExecute = true//为true,则用默认的打开方式打开 }; //创建Process命令 var cmd = new Process(); cmd.StartInfo = startfile; cmd.Start(); //打开文件 } } /// <summary> /// byte[]转System.Drawing.Image /// </summary> /// <param name="buffer">byte[]</param> /// <returns>System.Drawing.Image</returns> public static Image ByteToImage(byte[] buffer) { MemoryStream ms = new MemoryStream(buffer); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); return img; } /// <summary> /// System.Drawing.Bitmap转byte[] /// </summary> /// <param name="Bit">System.Drawing.Bitmap</param> /// <param name="format">图片格式</param> /// <returns>byte[]</returns> public static byte[] ByteToBitmap(Bitmap Bitmap, ImageFormat format) { byte[] back = null; MemoryStream ms = new MemoryStream(); Bitmap.Save(ms, format); back = ms.GetBuffer(); ms.Dispose(); return back; } /// <summary> /// byte[]转内存流MemoryStream /// </summary> /// <param name="buff">byte[]</param> /// <returns>MemoryStream</returns> public static MemoryStream ByteToMemoryStream(byte[] buff) { return new MemoryStream(buff); } /// <summary> /// 内存流MemoryStream转byte[] /// </summary> /// <param name="outStream">MemoryStream</param> /// <returns>byte[]</returns> public static byte[] MemoryStreamToByte(MemoryStream outStream) { return outStream.ToArray(); } /// <summary> /// 流Stream转byte[] /// </summary> /// <param name="stream">Stream</param> /// <returns>byte[]</returns> public byte[] StreamToByte(Stream stream) { byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); // 设置当前流的位置为流的开始 stream.Seek(0, SeekOrigin.Begin); return bytes; } /// <summary> /// byte[]转Stream流 /// </summary> /// <param name="bytes">byte[]</param> /// <returns>Stream</returns> public Stream ByteToStream(byte[] bytes) { return new MemoryStream(bytes); } //从文件读取 Stream /// <summary> /// 文件转Stream流 /// </summary> /// <param name="FileName">绝对路径</param> /// <returns>Stream流</returns> public Stream FileToStream(string FileName) { // 打开文件 FileStream fileStream = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read); // 读取文件的 byte[] byte[] bytes = new byte[fileStream.Length]; fileStream.Read(bytes, 0, bytes.Length); fileStream.Dispose(); fileStream.Close(); // 把 byte[] 转换成 Stream Stream stream = new MemoryStream(bytes); return stream; }