Vous ne doit pas utiliser StreamReader
pour les fichiers binaires (comme les gifs ou les jpgs). StreamReader
est pour texte données. Vous allez presque certainement perdre des données si vous l'utilisez pour des données binaires arbitraires. (Si vous utilisez Encoding.GetEncoding(28591), vous vous en sortirez probablement, mais à quoi bon).
Pourquoi devez-vous utiliser un StreamReader
du tout ? Pourquoi ne pas simplement garder les données binaires comme des données binaires et les réécrire sur le disque (ou SQL) comme des données binaires ?
Comme cela semble être quelque chose que les gens veulent voir... si vous hacer Si vous voulez simplement copier un flux vers un autre (par exemple vers un fichier), utilisez quelque chose comme ceci :
/// <summary>
/// Copies the contents of input to output. Doesn't close either stream.
/// </summary>
public static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[8 * 1024];
int len;
while ( (len = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, len);
}
}
Pour l'utiliser afin de vider un flux vers un fichier, par exemple :
using (Stream file = File.Create(filename))
{
CopyStream(input, file);
}
Notez que Stream.CopyTo
a été introduite dans .NET 4 et sert essentiellement le même objectif.
5 votes
Qu'est-ce que myOtherObject ?