Latest web development tutorials

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é:

掩码描述
0700rwx 掩码,针对所有者
0400r ,针对所有者
0200w ,针对所有者
0100x ,针对所有者
0070rwx 掩码,针对所属组
0040r ,针对所属组
0020w ,针对所属组
0010x ,针对所属组
0007rwx 掩码,针对其他人
0004r ,针对其他人
0002w ,针对其他人
0001x ,针对其他人
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: