quel est le caractère de fin de fichier de filestream?
je suis à la recherche dans une boucle while pour un personnage en particulier, de vérifier si elle a atteint la fin du fichier.
Le personnage qui je peux chercher ??
Par exemple:
Indexof('/n') end of line
Indexof(' ') end of word
???? ---------- end of file??
OriginalL'auteur SmartestVEGA | 2010-03-11
Vous devez vous connecter pour publier un commentaire.
La fin du Flux est atteinte lorsqu'un Flux.Read renvoie zéro.
Un exemple à partir de MSDN, FileStream:
ou,
quelle sera la taille de "b" (tableau d'octets) si FileStream Lire la méthode renvoie la valeur 0 ?
OriginalL'auteur Mitch Wheat
Peut-être ce que vous cherchez est ce
OriginalL'auteur anijhaw
Lorsque FileStream retour 0, cela ne signifie pas que vous avez atteint la fin du fichier. J'avais de l'expérience.
À partir de MSDN:
Le nombre total d'octets lus dans la mémoire tampon. Cela peut être inférieur au nombre d'octets demandés si le nombre d'octets sont n'est actuellement pas disponible, ou zéro si la fin du flux est atteinte.
Ceci se produire à ralentir périphérique usb.
OriginalL'auteur erha
Il n'y a pas de caractère EOF. Appel
FileStream.Read
dans une boucle. Lorsque.Read()
retourne 0 en l'absence d'octets lus, vous avez terminé.Les docs sont très claires sur ce comportement.
http://msdn.microsoft.com/en-us/library/system.io.filestream.read.aspx
Vous avez raison, je corrige la position des mains, il aura au moins une, jamais de zéro. Enlevé le bas-vote;
merci pour votre réponse. Citant les docs est mieux que de simplement faire la déclaration de toute façon, donc je suis heureux que vous m'avez donné une bonne raison de modifier ma réponse.
OriginalL'auteur Samuel Neff
Il n'y a pas de "caractère de fin de fichier" dans une chaîne de caractères (ou même dans un fichier). La longueur de la chaîne est connue (
Length
de la propriété), de sorte qu'il n'est pas nécessaireLors de la lecture d'un fichier, vous pouvez vérifier :
Stream.Read
retourne 0StreamReader.ReadLine
retourne nullOriginalL'auteur Thomas Levesque
Il n'y a pas un tel caractère. Si vous appelez FileStream.ReadByte, il sera de retour -1 pour la fin-de-fichier. La méthode de Lecture de retour à zéro octets lus. Si vous utilisez un StreamReader autour de la rivière, sa méthode ReadLine renvoie la valeur null ou de ses EndOfStream propriété renvoie la valeur true.
FileStream.ReadByte
.OriginalL'auteur Mattias S
Parfois, vous ne voulez pas lire l'ensemble de la ligne. Par exemple, si la ligne est très longue, ou de l'enregistrement à la chaîne dans une variable temporaire n'est pas utile.
Dans ces cas, vous pouvez utiliser le Peek() fonction de la StreamReader. Lorsqu'elle retourne -1 vous êtes à la fin. Par exemple:
OriginalL'auteur ItsAllABadJoke