Comment puis-je utiliser le Fichier.ReadAllBytes En morceaux
Je suis en utilisant ce code
string location1 = textBox2.Text;
byte[] bytes = File.ReadAllBytes(location1);
string text = (Convert.ToBase64String(bytes));
richTextBox1.Text = text;
Mais lorsque j'utilise un fichier qui est trop grand, je sors de la mémoire exception.
Je veux utiliser File.ReadAllBytes
en morceaux. J'ai vu ce type de code ci-dessous
System.IO.FileStream fs = new System.IO.FileStream(textBox2.Text, System.IO.FileMode.Open);
byte[] buf = new byte[BUF_SIZE];
int bytesRead;
//Read the file one kilobyte at a time.
do
{
bytesRead = fs.Read(buf, 0, BUF_SIZE);
//'buf' contains the last 1024 bytes read of the file.
} while (bytesRead == BUF_SIZE);
fs.Close();
}
Mais je ne sais pas comment convertir le bytesRead
dans un tableau d'octets que je vais convertir en texte.
EDIT: Réponse trouvée. Voici le code!
private void button1_Click(object sender, EventArgs e)
{
const int MAX_BUFFER = 2048;
byte[] Buffer = new byte[MAX_BUFFER];
int BytesRead;
using (System.IO.FileStream fileStream = new FileStream(textBox2.Text, FileMode.Open, FileAccess.Read))
while ((BytesRead = fileStream.Read(Buffer, 0, MAX_BUFFER)) != 0)
{
string text = (Convert.ToBase64String(Buffer));
textBox1.Text = text;
}
}
Pour changer le lisible octets qui sont au format texte, créez un nouveau byte et la rendre égale
(Convertir.FromBase64String(Texte)). Merci à tous!
Vous devez vous connecter pour publier un commentaire.
La bytesRead est juste le nombre d'octets à lire.
Voici de bloquer la lecture de
Maintenant, vous avez les octets dans le
buffer
et peut les convertir comme vous le souhaitez.par exemple à l'intérieur de l' "à l'aide de flux":
Non, la valeur de retour de
Read()
est combien d'octets ont été lus. Les données sont dans le tableau d'octetsbuf
que vous êtes de passage àRead()
. Vous devriez essayer et de comprendre le code au lieu de simplement copier & coller, puis en demandant pourquoi il ne fonctionne pas. Même si vous le faites, le commentaire dit qu'il là!En fonction de la structure du fichier, il peut être plus facile pour vous d'utiliser un
StreamReader
qui expose unReadLine
méthode.Si le fichier est un fichier texte, vous pouvez utiliser un TextReader: