可以将一个字节数组写入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); }