Lire un fichier texte ligne par ligne
Core
Membre
Bonjour je cherche le moyen de lire un fichier TXT ligne par ligne comme en Perl
while(<FILE>)
{
print $_ ;
}
J'ai bien trouvé le moyen de faire une NSString avec tout le contenu, mais j'aimerais lire ligne par ligne
Je cherche aussi l'équivalent de SPLIT qui sépare une chaine de caractère dès que le caractère de séparation est trouvé.
Merci d'avance !!
while(<FILE>)
{
print $_ ;
}
J'ai bien trouvé le moyen de faire une NSString avec tout le contenu, mais j'aimerais lire ligne par ligne
Je cherche aussi l'équivalent de SPLIT qui sépare une chaine de caractère dès que le caractère de séparation est trouvé.
Merci d'avance !!
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je ne suis absolument pas chaud pour utiliser cette méthode de récupération des lignes...
\n est utilisé dans les fichiers textes issus de Unix, mais pas ceux de OS 9 (qui est \r), ni ceux de windows (\r\n).
La classe NSString fournit une méthode getLineStart:end:contentsEnd:forRange: qui, utilisée dans une boucle, permet de récupérer toutes les lignes d'une chaà®ne, et quelque soit le séparateur de ligne utilisé.
La doc est ici.
.
Mais la methode componentsSeparatedByString: cité par renaud me permettra de faire mon SPLIT
merci à vous deux
Serait ce abuser de te demander le boucle ?
en perl j'utilisais while (<FILE>) avec File un fichier ouvert avant la boucle
Merci d'avance !
Voici la boucle en question :
[tt]
{
NSString *fichier;
unsigned int debutLigne, debutLigneSuivante, finLigne;
NSMutableArray *tabLigne;
fichier=[NSString stringWithContentsOfFile:@/test.txt];
tabLigne=[NSMutableArray array];
debutLigneSuivante=0;
do
{
[fichier getLineStart:&debutLigne
end:&debutLigneSuivante
contentsEnd:&finLigne
forRange:NSMakeRange(debutLigneSuivante, 1)
];
[tabLigne addObject:
[fichier substringWithRange:NSMakeRange(debutLigne, finLigne-debutLigne)]
];
} while (debutLigne<finLigne);
}
[/tt]
A la fin de la procédure, le tableau (NSArray) tabLigne contient les lignes du fichier.
.
Je me suis posé la question moi aussi la première fois que j'ai voule employer cette méthode et le fait est que pour le moment elle a toujours marché. Pour une bonne raison : je ne remplis jamais un NSString directement en lisant un fichier mais toujours en passant par un NSData et ensuite en utilisant la méthode initWithData: encoding: .
Du coup, d'après mon expérience personnelle, la NSString signale toujours les fins de lignes par un /n.
Chez moi, ce code plante à tout les coups. C'est le condition du While qui me parait incorecte.
J'ai modifié ainsi et ça marche:
J'avais à faire comme en C avec fgets mais ça ne marche pas.
J'ai donc fait avec ce qu'il y dans ce post :
Et quabd j'execute cette fonction le debbuger m'affiche (null) .
J'ai importer monfichier.txt dans Resources .
Qu'est-ce qui cloche?
Le même endroit où y a "/Applications"
Regarde la méthode "- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension" de NSBundle
en gros j'ai du code php qui va chercher dans une base du texte toutes les secondes et qui met se texte dans monfichier.txt . Je veux afficher ce contenu dans mon application et qu'il soit actualisé tout seul. Sans devoir aller le chercher.
Quoi qu'il en soit, ça a dans ce cas sa place dans un des dossiers "Application Support"
Pa contre je vois pas de Application support ... Il faudrai copier monfichier.txt dans ce dossier et reprendre mon ancien code?
/Users/<username>/Library/Application\ Support/<nom appli> pour le endUser
Merci.