我正在尝试写出一个Byte[]
表示文件完整文件的 数组.
来自客户端的原始文件通过TCP发送,然后由服务器接收.接收到的流被读取到一个字节数组,然后被发送以由该类处理.
这主要是为了确保接收TCPClient
为下一个流做好准备并将接收端与处理端分开.
所述FileStream
类不采取一个字节数组作为参数或另一个流对象(它允许你写字节到它).
我的目标是通过与原始(使用TCPClient的线程)不同的线程完成处理.
我不知道如何实现这个,我该怎么办?
基于问题的第一句话:"我正在尝试将表示完整文件的Byte []数组写入文件."
阻力最小的路径是:
File.WriteAllBytes(string path, byte[] bytes)
记录在这里:
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 offset,int count)方法将其写出来.
如果您的数组名称是"myArray",那么代码就是.
myStream.Write(myArray, 0, myArray.count);
是的,为什么不呢?
fs.Write(myByteArray, 0, myByteArray.Length);