[C#] 是否可以將字節[]數組寫入C#文件中?



Answers

您可以使用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一部分...讓我們說這是留給讀者的練習;-)

Question

我試圖寫出一個表示完整文件的Byte[]數組到一個文件。

來自客戶端的原始文件通過TCP發送,然後由服務器接收。 接收到的流被讀取到一個字節數組,然後發送給這個類來處理。

這主要是為了確保接收TCPClient已準備好接收下一個流,並將接收端與處理端分開。

FileStream類不會將字節數組作為參數或另一個Stream對象(它允許您將字節寫入它)。

我打算通過與原始版本(使用TCPClient的版本)不同的線程完成處理。

我不知道如何實現這一點,我應該嘗試什麼?




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



是的,為什麼不呢?

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



你可以使用System.IO.BinaryWriter來獲取Stream,

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



Links