可以将一个字节数组写入C#文件中?

我试图写出一个Byte[]数组表示一个完整的文件到一个文件。

来自客户端的原始文件通过TCP发送,然后由服务器接收。 接收到的stream被读取到一个字节数组,然后发送给这个类来处理。

这主要是为了确保接收TCPClient准备好下一个stream,并将接收端和处理端分开。

FileStream类不会将字节数组作为参数或另一个Stream对象(它允许您将字节写入它)。

我的目标是通过从原来的一个不同的线程(与TCPClient的)完成处理。

我不知道如何实现这个,我该怎么办?

基于这个问题的第一个句子: “我试图写出一个代表完整文件的Byte []数组到文件中。

阻力最小的path是:

 File.WriteAllBytes(string path, byte[] bytes) 

logging在这里:

System.IO.File.WriteAllBytes – MSDN

您可以使用BinaryWriter对象。

 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; } 

编辑:哎呀,忘了finally一部分…让我们说这是留给读者的练习;-)

有一个静态方法System.IO.File.WriteAllBytes

你可以使用System.IO.BinaryWriter来获取Stream,

 var bw = new BinaryWriter(File.Open("path",FileMode.OpenOrCreate); bw.Write(byteArray); 

您可以使用FileStream.Write(byte []数组,int偏移量,int count)方法将其写出。

如果你的数组名称是“myArray”的代码将是。

 myStream.Write(myArray, 0, myArray.count); 

是的,为什么不呢?

 fs.Write(myByteArray, 0, myByteArray.Length); 
 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); }