当前位置:  开发笔记 > 编程语言 > 正文

可以将Byte []数组写入C#中的文件吗?

如何解决《可以将Byte[]数组写入C#中的文件吗?》经验,为你挑选了6个好方法。

我正在尝试写出一个Byte[]表示文件完整文件的 数组.

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

这主要是为了确保接收TCPClient为下一个流做好准备并将接收端与处理端分开.

所述FileStream类不采取一个字节数组作为参数或另一个流对象(它允许你写字节到它).

我的目标是通过与原始(使用TCPClient的线程)不同的线程完成处理.

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



1> Kev..:

基于问题的第一句话:"我正在尝试将表示完整文件的Byte []数组写入文件."

阻力最小的路径是:

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

记录在这里:

System.IO.File.WriteAllBytes - MSDN



2> Treb..:

您可以使用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部分...让我们说这是留给读者的练习;-)


`BinaryWriter`是一次性的,所以应该在`using`块中使用.这也意味着你可以放弃一些额外的调用,因为[源代码](https://referencesource.microsoft.com/#mscorlib/system/io/binarywriter.cs,51545ac4b683f454)显示它做了一些处理时清理.

3> Andrew Rolli..:

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



4> JoshBerke..:

您可以使用System.IO.BinaryWriterStream 来执行此操作:

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


只想添加,写完后添加bw.flush和bw.close
@dekdev:在`Close()`之前调用`Flush()`是没有意义的,因为`Close()`会刷新.更好的是使用`using`子句,它也会冲洗'n'关闭.

5> Mitchel Sell..:

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

如果您的数组名称是"myArray",那么代码就是.

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



6> Mehrdad Afsh..:

是的,为什么不呢?

fs.Write(myByteArray, 0, myByteArray.Length);

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有