2009-12-28 5 views
1

Je crois que File.foreach ('input.txt') lirait le fichier une ligne à la fois. Je n'ai pas pu trouver de documentation sur ce sujet. Quelqu'un peut-il confirmer cela?rubyj traitant un grand nombre de fichiers

Je voulais aussi créer un fichier gigantesque pour tester la différence entre File.forach et File.open. Si le fichier est vraiment grand, File.open devrait échouer et File.foreach devrait réussir. Quelqu'un sait-il un truc astucieux * nix pour créer un fichier gigantesque très rapidement?

Mise à jour:

En plus de lecture que j'ai trouvé différentes façons suivantes pour lire un fichier. Je ne sais pas lequel essaierait de tous les lire en même temps. Va essayer quelques cas et mettra à jour ce post.

f = File.open('input.txt') 
a = f.readlines 

f = File.open('input.txt') 
a = f.get 

f = File.open('input.txt') 
f.each_line{ |s| puts s} 

Répondre

1

File.foreach (« fichier ») va créer un recenseur pour les lignes dans le fichier, alors oui, il fait ce que vous croyez qu'il fasse. Afin de créer un fichier volumineux utilisation rapide ce (cela crée un fichier de 1 Go, vous pouvez modifier le paramètre de comptage si vous avez besoin quelque chose de plus):

dd if=/dev/random of=myfile.dat bs=$((1024 * 1024 )) count=1000 
0

Il n'y a aucune raison particulière qui open devrait échouer sur un très grand fichier. Autrement dit, open ouvre simplement un fichier (pour lire, écrire ou ajouter). Il ne supprime pas immédiatement le fichier en mémoire.

En termes de documentation Ruby E/S, je commencerais ici:

http://ruby-doc.org/core/classes/IO.html

Questions connexes