Ruby fichier d'entrée et de sortie
Ruby fournit un ensemble de méthodes / liées O-I mis en œuvre dans le noyau (Kernel) module. Tout procédé I / O est dérivée de la classe IO.
IOfournit toute l'approche basée sur la classe, tels quelecture, écriture, obtient, met,readline, getc etprintf.
Cette section explique toutes les fonctions d'E / S à base de Ruby disponibles. Pour plus de fonctions, s'il vous plaît voir la classeIORuby.
déclarationmet
Dans la section précédente, vous avez affecté à une variable, puis utilisez l'impression des étatsputs.
metdéclaration indique que le programme affiche les valeurs stockées dans les variables. Cela va ajouter une nouvelle ligne à la fin de chaque ligne.
Exemples
#!/usr/bin/ruby val1 = "This is variable one" val2 = "This is variable two" puts val1 puts val2
Exécutez l'exemple ci-dessus est sortie:
This is variable one This is variable two
obtientDéclaration
obtientla déclaration peut être utilisée pour obtenir l' entrée d'utilisateur à partir de l'écran standard appelé STDIN.
Exemples
Le code suivant montre comment utiliser la déclaration obtient. Le code demandera à l'utilisateur d'entrer une valeur qui sera stockée dans le val variable, la finale sera imprimée sur STDOUT.
#!/usr/bin/ruby puts "Enter a value :" val = gets puts val
Exécutez l'exemple ci-dessus est sortie:
Enter a value : This is entered value This is entered value
déclarationputc
Etmetune déclaration différente, la déclarationmetla sortie de l'ensemble de la chaîne à l'écran, alors que la déclarationputcpeut être utilisé pour produire une séquence de caractères.
Exemples
La sortie du code seul caractère H suivant:
#!/usr/bin/ruby str="Hello Ruby!" putc str
Exécutez l'exemple ci-dessus est sortie:
H
déclarationsd'impression
imprimerdes déclarations etmetune déclaration similaire. La seule différence est que , après la déclarationmetla sortie saute à la ligne suivante, tandis que l'utilisation de la déclarationd'impression,le curseur est positionné sur la même ligne.
Exemples
#!/usr/bin/ruby print "Hello World" print "Good Morning"
Exécutez l'exemple ci-dessus est sortie:
Hello WorldGood Morning
Ouverture et fermeture de fichiers
A partir de maintenant, vous devez lire et écrire à l'entrée et la sortie standard. Maintenant, nous allons voir comment les fichiers de données réelles.
méthodeFile.new
Vous pouvez créer un objetde fichierest utilisé pour lire la méthodeFile.new,écrire ou lire et écrire, lire et écrire des autorisations en fonction des paramètres du mode. Enfin, vous pouvez utiliser la méthodefile.closepour fermer le fichier.
grammaire
aFile = File.new("filename", "mode") # ... 处理文件 aFile.close
méthodeFile.open
Vous pouvez créer un nouvel objet de fichier en utilisant la méthodeFile.open,et l'objet est affecté au fichier de fichier. Cependant, il y a une différence entre les méthodesFile.OpenetFile.new.La différence estFile.openprocédé peut être associé à la séquence, mais pas procédéFile.new.
File.open("filename", "mode") do |aFile| # ... process the file end
Le tableau suivant dresse la liste des fichiers ouverts dans différents modes:
模式 | 描述 |
---|---|
r | 只读模式。文件指针被放置在文件的开头。这是默认模式。 |
r+ | 读写模式。文件指针被放置在文件的开头。 |
w | 只写模式。如果文件存在,则重写文件。如果文件不存在,则创建一个新文件用于写入。 |
w+ | 读写模式。如果文件存在,则重写已存在的文件。如果文件不存在,则创建一个新文件用于读写。 |
a | 只写模式。如果文件存在,则文件指针被放置在文件的末尾。也就是说,文件是追加模式。如果文件不存在,则创建一个新文件用于写入。 |
a+ | 读写模式。如果文件存在,则文件指针被放置在文件的末尾。也就是说,文件是追加模式。如果文件不存在,则创建一个新文件用于读写。 |
La lecture et l'écriture de fichiers
Le procédé de simples E / S peut également être utilisé pour tous les objets de fichier. Alors, se lit une ligne depuis l'entrée standard,aFile.gets aFile lit une ligne à partir de l'objet fichier.
Cependant, I / O objet fournit un ensemble supplémentaire de méthodes d'accès, nous offre la commodité.
méthodesysread
Vous pouvez utiliser la méthodesysreadpour lire le contenu du fichier. Lorsque vous utilisez la méthode sysread, vous pouvez utiliser un mode pour ouvrir le fichier. Par exemple:
Ce qui suit est le fichier de saisie de texte:
This is a simple text file for testing purpose.
Maintenant, nous allons essayer de lire le fichier:
#!/usr/bin/ruby aFile = File.new("input.txt", "r") if aFile content = aFile.sysread(20) puts content else puts "Unable to open file!" end
Cette déclaration entrera dans les 20 premiers caractères du fichier. Le pointeur de fichier sera placé dans une position dans le fichier 21 caractères.
méthodesyswrite
Vous pouvez utiliser la méthodesyswriteà écrire dans le fichier. Lorsque vous utilisez la méthode syswrite, vous devez ouvrir le fichier en mode écriture. Par exemple:
#!/usr/bin/ruby aFile = File.new("input.txt", "r+") if aFile aFile.syswrite("ABCDEF") else puts "Unable to open file!" end
Les états sont écrits "ABCDEF" dans un fichier.
méthodeeach_byte
Cette méthode appartient à la classeFile.Each_byte méthode itérative est capable d'enchaîner chaque caractère. Prenons les exemples de code suivants:
#!/usr/bin/ruby aFile = File.new("input.txt", "r+") if aFile aFile.syswrite("ABCDEF") aFile.rewind aFile.each_byte {|ch| putc ch; putc ?. } else puts "Unable to open file!" end
Un par un caractère est passé ch variable, puis affiché sur l'écran, comme illustré ci-dessous:
A.B.C.D.E.F.s. .a. .s.i.m.p.l.e. .t.e.x.t. .f.i.l.e. .f.o.r. .t.e.s.t.i.n.g. .p.u.r.p.o.s.e...
méthodeIO.readlines
classeFileest une sous - classe de la classe IO. classe IO a aussi quelques méthodes de manipulation de fichiers.
IO.readlinesest classe IO une méthode. La méthode progressive retourne le contenu du fichier. Le code suivant montre une méthodeIO.readlinesutiliser:
#!/usr/bin/ruby arr = IO.readlines("input.txt") puts arr[0] puts arr[1]
Dans ce code, la variable est un arr tableau. Chaque ligne est un fichier arr tableauinput.txtun élément. Par conséquent, arr [0] contiendra la première ligne, et arr [1] contiendra la deuxième ligne du fichier.
méthodeIO.foreach
La méthode renvoie également la sortie progressive.Foreachentre les différentes méthodes et méthodesreadlinesest associé bloc méthodeforeach.Cependant, contrairement à la méthodereadlines,méthode au lieu de retourner un tableauforeach.Par exemple:
#!/usr/bin/ruby IO.foreach("input.txt"){|block| puts block}
Ce code permettra detesterle contenu du fichier transmis bloc progressif variable, la sortie sera affiché sur l'écran.
Renommer et supprimer des fichiers
Vous pouvez renommer et supprimer des fichiersrenommeretsupprimerdes méthodes.
L'exemple suivant renomme un fichier qui existe déjàtest1.txt:
#!/usr/bin/ruby # 重命名文件 test1.txt 为 test2.txt File.rename( "test1.txt", "test2.txt" )
L'exemple ci - dessous pour supprimer untest2.txtfichierexistant:
#!/usr/bin/ruby # 删除文件 test2.txt File.delete("text2.txt")
le mode et la propriété Fichier
Utilisezchmodpour changer la méthode avec un / liste d'accès des autorisations de motif ou de fichier masque:
Des exemples des modifications suivantes à un modèledefichiertest.txtexistant pour une valeur de masque:
#!/usr/bin/ruby file = File.new( "test.txt", "w" ) file.chmod( 0755 )
Le tableau suivant répertorie les différents masques méthodechmodpeut être utilisé:
掩码 | 描述 |
---|---|
0700 | rwx 掩码,针对所有者 |
0400 | r ,针对所有者 |
0200 | w ,针对所有者 |
0100 | x ,针对所有者 |
0070 | rwx 掩码,针对所属组 |
0040 | r ,针对所属组 |
0020 | w ,针对所属组 |
0010 | x ,针对所属组 |
0007 | rwx 掩码,针对其他人 |
0004 | r ,针对其他人 |
0002 | w ,针对其他人 |
0001 | x ,针对其他人 |
4000 | 执行时设置用户 ID |
2000 | 执行时设置所属组 ID |
1000 | 保存交换文本,甚至在使用后也会保存 |
Accès Document
La commande suivante pour vérifier le fichier avant d'ouvrir le fichier existe déjà:
#!/usr/bin/ruby File.open("file.rb") if File::exists?( "file.rb" )
La commande suivante pour interroger si le fichier est vraiment un fichier:
#!/usr/bin/ruby # 返回 true 或false File.file?( "text.txt" )
Après commande pour vérifier si le fichier est un dossier:
#!/usr/bin/ruby # 一个目录 File::directory?( "/usr/local/bin" ) # => true # 一个文件 File::directory?( "file.rb" ) # => false
Est la commande suivante pour vérifier le fichier lisible, inscriptible, exécutable:
#!/usr/bin/ruby File.readable?( "test.txt" ) # => true File.writable?( "test.txt" ) # => true File.executable?( "test.txt" ) # => false
La commande suivante vérifie la taille du fichier à zéro:
#!/usr/bin/ruby File.zero?( "test.txt" ) # => true
La commande suivante renvoie la taille du fichier:
#!/usr/bin/ruby File.size?( "text.txt" ) # => 1002
La commande suivante est utilisée pour vérifier le type de fichier:
#!/usr/bin/ruby File::ftype( "test.txt" ) # => file
méthode ftype renvoie une valeur de ce qui suit pour identifier le type defichier: fichier, répertoire, characterSpecial, blockSpecial, fifo, lien, socketou inconnu.
La commande suivante est utilisée pour vérifier le fichier a été créé, modifié ou heure du dernier accès:
#!/usr/bin/ruby File::ctime( "test.txt" ) # => Fri May 09 10:06:37 -0700 2008 File::mtime( "text.txt" ) # => Fri May 09 10:44:44 -0700 2008 File::atime( "text.txt" ) # => Fri May 09 10:45:01 -0700 2008
répertoire Ruby
Tous les fichiers sont contenus dans le répertoire, Ruby fournit un fichier de processus et des répertoires.Fichierdes classes pour travailler avec desfichiers,des classes Dir pour le répertoire de travail.
Parcourir le catalogue
Pour changer le répertoire dans le programme Ruby, s'il vous plaît utiliserDir.chdir.Des exemples des changements suivants dans le répertoire courant est/ usr / bin.
Dir.chdir("/usr/bin")
Vous pouvez afficher le répertoire courantDir.pwd:
puts Dir.pwd # 返回当前目录,类似 /usr/bin
Vous pouvez utiliserDir.entriesobtenir une liste des fichiers et répertoires dans le répertoire spécifié:
puts Dir.entries("/usr/bin").join(' ')
Dir.entriesretourne un tableau contenant tous le répertoire spécifié.Dir.foreachfournit la même fonctionnalité:
Dir.foreach("/usr/bin") do |entry| puts entry end
Obtenir une liste de répertoires d'une manière plus concise est une méthode en utilisant le tableau de classe Dir:
Dir["/usr/bin/*"]
Créez un répertoire
Dir.mkdirêtre utilisé pour créer le répertoire:
Dir.mkdir("mynewdir")
Vous pouvez également définir des autorisations sur le nouveau répertoire (pas de répertoire existant) adopté mkdir:
Remarque: Masque 755 propriétaire de Set (propriétaire), appartient au groupe (groupe), tout le monde ( le monde [quelqu'un]) autorisations rwxr-xr-x, où r = lu lu, w = écriture écrire, x = exécuter l'exécution.
Dir.mkdir( "mynewdir", 755 )
Supprimer le répertoire
Dir.deleteêtre utilisé pour supprimer des répertoires.Dir.unlinketDir.rmdirremplissent la même fonction, nous offre la commodité.
Dir.delete("testdir")
Créez un répertoire temporaire Fichier &
Les fichiers temporaires sont créés qui sont tout simplement dans le processus d'exécution du programme, mais ne sont pas stockées de façon permanente des informations.
Dir.tmpdirfournit un chemin sur le système répertoire temporaire du courant, mais qui par défaut ne sont pas disponibles. PourDir.tmpdirdisponible, avec le 'tmpdir' requise est nécessaire.
Vous pouvezDir.tmpdiretFile.joinutilisés ensemble pour créer un fichier temporaire plate-forme indépendante:
require 'tmpdir' tempfilename = File.join(Dir.tmpdir, "tingtong") tempfile = File.new(tempfilename, "w") tempfile.puts "This is a temporary file" tempfile.close File.delete(tempfilename)
Ce code crée un fichier temporaire dans lequel écrire les données, puis supprimez le fichier. Ruby bibliothèque standard contient également une bibliothèque nomméefichier temporairede la bibliothèque peut être utilisée pour créer un fichier temporaire:
require 'tempfile' f = Tempfile.new('tingtong') f.puts "Hello" puts f.path f.close
Fonctions intégrées
Voici une liste complète des fichiers et des répertoires dans les fonctions intégrées de Ruby: