Can a Byte[] Array be written to a file in C#?
我正试图写出一个表示完整文件到文件的
来自客户机的原始文件通过TCP发送,然后由服务器接收。接收到的流被读取到一个字节数组,然后发送给这个类进行处理。
这主要是为了确保接收端
我的目标是通过不同于原始线程(使用tcpclient的线程)的线程完成处理。
我不知道如何实现这一点,我应该尝试什么?
基于问题的第一句话:"我正试图写出一个byte[]数组,它代表一个文件的完整文件。"
阻力最小的路径是:
1 | File.WriteAllBytes(string path, byte[] bytes) |
记录如下:
System.IO.File.WriteAllBytes - MSDN
您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | protected bool SaveData(string FileName, byte[] Data) { BinaryWriter Writer = null; string Name = @"C:\temp\yourfile.name"; try { // Create a new stream to write to the file Writer = new BinaryWriter(File.OpenWrite(Name)); // Writer raw data Writer.Write(Data); Writer.Flush(); Writer.Close(); } catch { //... return false; } return true; } |
编辑:哎呀,忘了
有一个静态方法
您可以使用
1 2 |
可以使用filestream.write(byte[]数组,int offset,int count)方法将其写出。
如果您的数组名为"myarray",则代码为。
1 | myStream.Write(myArray, 0, myArray.count); |
是的,为什么不呢?
1 | fs.Write(myByteArray, 0, myByteArray.Length); |
尝试BinaryReader:
1 2 3 4 5 6 7 8 9 10 11 12 | /// <summary> /// Convert the Binary AnyFile to Byte[] format /// </summary> /// <param name="image"></param> /// <returns></returns> public static byte[] ConvertANYFileToBytes(HttpPostedFileBase image) { byte[] imageBytes = null; BinaryReader reader = new BinaryReader(image.InputStream); imageBytes = reader.ReadBytes((int)image.ContentLength); return imageBytes; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public ActionResult Document(int id) { var obj = new CEATLMSEntities().LeaveDocuments.Where(c => c.Id == id).FirstOrDefault(); string[] stringParts = obj.FName.Split(new char[] { '.' }); string strType = stringParts[1]; Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("content-disposition","attachment; filename=" + obj.FName); var asciiCode = System.Text.Encoding.ASCII.GetString(obj.Document); var datas = Convert.FromBase64String(asciiCode.Substring(asciiCode.IndexOf(',') + 1)); //Set the content type as file extension type Response.ContentType = strType; //Write the file content this.Response.BinaryWrite(datas); this.Response.End(); return new FileStreamResult(Response.OutputStream, obj.FType); } |