Un tableau Byte [] peut-il être écrit dans un fichier en C#?
j'essaie d'écrire un tableau Byte[]
représentant un fichier complet à un fichier.
le fichier original du client est envoyé via TCP puis reçu par un serveur. Le flux reçu est lu à un tableau d'octets et ensuite envoyé pour être traité par cette classe.
il s'agit principalement de s'assurer que le récepteur TCPClient
est prêt pour le flux suivant et de séparer l'extrémité de réception de l'extrémité de traitement.
La classe FileStream
ne prend pas un tableau d'octets comme argument ou un autre objet Stream ( ce qui vous permet d'y écrire des octets).
je vise à obtenir le traitement fait par un fil différent de l'original ( celui avec le TCPClient).
Je ne sais pas comment mettre en œuvre ceci, Que dois-je essayer?
8 réponses
basé sur la première phrase de la question: "j'essaie d'écrire un Byte[] array représentant un fichier complet à un fichier."
Le chemin de moindre résistance serait:
File.WriteAllBytes(string path, byte[] bytes)
documentée ici:
vous pouvez utiliser un objet 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;
}
Edit: Oops, forget the finally
part... disons qu'il est laissé comme un exercice pour le lecteur; -)
il existe une méthode statique System.IO.File.WriteAllBytes
vous pouvez faire cela en utilisant System.IO.BinaryWriter
qui prend un jet ainsi:
var bw = new BinaryWriter(File.Open("path",FileMode.OpenOrCreate);
bw.Write(byteArray);
vous pouvez utiliser la FileStream.Write(byte[] tableau, int offset, int count) méthode de l'écrire.
si votre nom de tableau est" myArray " le code serait.
myStream.Write(myArray, 0, myArray.count);
oui, pourquoi pas?
fs.Write(myByteArray, 0, myByteArray.Length);
Try BinaryReader:
/// <summary>
/// Convert the Binary AnyFile to Byte[] format
/// </summary>
/// <param name="image"></param>
/// <returns></returns>
public static byte[] ConvertANYFileToBytes(HttpPostedFileBase image)
{
byte[] imageBytes = null;
BinaryReader reader = new BinaryReader(image.InputStream);
imageBytes = reader.ReadBytes((int)image.ContentLength);
return imageBytes;
}
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);
}