FileStream En Lecture/Écriture
Ok, Donc je suis en train d'écrire un autre programme dans le but de manipuler des fichiers binaires. Ce programme est l'importation d'un fichier de taille supérieure à tout ce que j'ai eu à manipuler avant, à environ 12K.
Je suis curieux de savoir comment le Flux.commande de lecture des œuvres....Je sais que cela semble élémentaire, mais comment puis-je dire que le fichier a été lu complètement afin que je puisse commencer à le manipuler, de plein droit maintenant, j'ai ce code...
//Opens a stream to the path chosen in the open file dialog
using (FileStream stream = new FileStream(chosenFile, FileMode.Open, FileAccess.Read))
{
size = (int)stream.Length; //Returns the length of the file
data = new byte[size]; //Initializes and array in which to store the file
stream.Read(data, 0, size); //Begins to read from the constructed stream
progressBar1.Maximum = size;
while (byteCounter < size)
{
int i = data[byteCounter];
byteCounter++;
progressBar1.Increment(1);
}
}
Je Comprends que c'est très très simple, mais quelqu'un peut-il m'expliquer comment le flux.Lire les œuvres, est-il tout stocker dans le tableau d'octets de données"," et puis je peux le manipuler comme je l'entends, ou dois-je avoir à manipuler le fichier en cours de lecture. Encore une fois je m'excuse si c'est élémentaire, toutes les pensées sont appréciés
OriginalL'auteur Bubo | 2012-08-08
Vous devez vous connecter pour publier un commentaire.
Cette ligne
lit tout à partir du flux et stocke le contenu de fichier dans votre tableau d'octets
Vous pouvez commencer à travailler immédiatement sur le tableau.
Voir FileStream.Lire docs sur MSDN
Votre code lit la longueur du fichier, d'allouer un tableau d'octets de la bonne taille, puis de lire tout d'un seul coup.
Bien sûr, cette méthode n'est pas viable si votre fichier est très gros.
(et la définition de "grands" pourrait être différente par rapport à la mémoire disponible).
Dans ce cas, l'approche utilisée est de lire des morceaux de fichier, le traitement et la mise en boucle jusqu'à ce que tous les octets sont lus.
Cependant, DotNet a des classes spécialisées pour lire et écrire des fichiers binaires.
Voir la documentation sur les BinaryReader
également en ce qui concerne bytecounter elle est définie plus haut dans le code,
Oui, vous obtenez la longueur du fichier, d'allouer un octet de la bonne taille, puis tout lire en un seul coup. (Ajouté quelques réflexions de ma réponse)
OriginalL'auteur Steve
Ce n'est pas exactement la réponse à votre question quant à comment Stream.Lire mais ne éclairer le fait que ce que vous voulez existe déjà .Net.
Fichier.ReadAllBytes fonctionnerait sans problème pour un 12K fichier.
OriginalL'auteur Austin Salonen