Latest web development tutorials

Rubino file di input e output

Rubino offre una serie di metodi di I / O legati implementati nel modulo del kernel (Kernel). Tutto metodo I / O è derivata dalla classe IO.

IOfornisce tutto l'approccio basato su classi, come lalettura, scrittura, ottiene, mette,readline, getc eprintf.

Questa sezione spiega tutte le funzioni di I / O Rubino-based disponibili. Per più funzioni, si prega di vedere ClasseIOdi Ruby.

mettedichiarazione

Nella sezione precedente, è stato assegnato ad una variabile, e quindi utilizzare la stampamettedichiarazione.

mettedichiarazione indica che il programma visualizza i valori memorizzati nelle variabili. Verrà aggiunta una nuova riga alla fine di ogni riga.

Esempi

#!/usr/bin/ruby

val1 = "This is variable one"
val2 = "This is variable two"
puts val1
puts val2

Eseguire l'uscita precedente esempio è il seguente:

This is variable one
This is variable two

ottieneStatement

ottienedichiarazione può essere utilizzato per ottenere l'input dell'utente dallo schermo standard chiamato STDIN.

Esempi

Il codice seguente illustra come utilizzare ottiene dichiarazione. Il codice verrà richiesto all'utente di inserire un valore che verrà memorizzato nella Val variabile, il finale sarà stampato su STDOUT.

#!/usr/bin/ruby

puts "Enter a value :"
val = gets
puts val

Eseguire l'uscita precedente esempio è il seguente:

Enter a value :
This is entered value
This is entered value

dichiarazioneputc

Emetteun'altra istruzione, l'istruzioneponel'uscita dell'intera stringa alla schermata, whileputcpuò essere utilizzato per produrre una sequenza di caratteri.

Esempi

L'output del seguente codice unico personaggio H:

#!/usr/bin/ruby

str="Hello Ruby!"
putc str

Eseguire l'uscita precedente esempio è il seguente:

H

istruzioni distampa

stamparele dichiarazioni emetteuna dichiarazione simile. L'unica differenza è che dopo l'istruzionemettel'uscita salterà alla riga successiva, mentre l'utilizzo di un'istruzionedi stampa,il cursore viene posizionato sulla stessa riga.

Esempi

#!/usr/bin/ruby

print "Hello World"
print "Good Morning"

Eseguire l'uscita precedente esempio è il seguente:

Hello WorldGood Morning

Apertura e chiusura di file

A partire da ora, si deve leggere e scrivere l'input e l'output standard. Ora, vedremo come le file di dati reali.

metodoFile.new

È possibile creare un oggettoFileviene utilizzato per leggere metodoFile.new,scrivere o leggere e scrivere, leggere e permessi a seconda dei parametri modalità di scrittura. Infine, è possibile utilizzare il metodoFile.Closeper chiudere il file.

grammatica

aFile = File.new("filename", "mode")
   # ... 处理文件
aFile.close

metodoFile.open

È possibile creare un nuovo oggetto file utilizzando il metodoFile.open,e l'oggetto viene assegnato al file. Tuttavia, vi è una differenza tra i metodiFile.OpeneFile.new.La differenza è metodoFile.openpuò essere associato con il blocco, ma non metodoFile.new.

File.open("filename", "mode") do |aFile|
   # ... process the file
end

Nella tabella seguente sono elencati i file aperti in diverse modalità:

模式描述
r只读模式。文件指针被放置在文件的开头。这是默认模式。
r+读写模式。文件指针被放置在文件的开头。
w只写模式。如果文件存在,则重写文件。如果文件不存在,则创建一个新文件用于写入。
w+读写模式。如果文件存在,则重写已存在的文件。如果文件不存在,则创建一个新文件用于读写。
a只写模式。如果文件存在,则文件指针被放置在文件的末尾。也就是说,文件是追加模式。如果文件不存在,则创建一个新文件用于写入。
a+读写模式。如果文件存在,则文件指针被放置在文件的末尾。也就是说,文件是追加模式。如果文件不存在,则创建一个新文件用于读写。

Lettura e scrittura di file

Il metodo per semplice I / O può anche essere utilizzato per tutti gli oggetti file. Quindi, si legge una rigadall'input standard,aFile.gets aFile legge una riga da oggetto file.

Tuttavia, I / O oggetto fornisce un ulteriore insieme di metodi di accesso, ci fornisce la convenienza.

metodosysread

È possibile utilizzare il metodosysreadper leggere il contenuto del file. Quando si utilizza il metodo di sysread, è possibile utilizzare qualsiasi una modalità per aprire il file. Ad esempio:

Quanto segue è il file di testo di input:

This is a simple text file for testing purpose.

Ora proviamo a leggere il file:

#!/usr/bin/ruby

aFile = File.new("input.txt", "r")
if aFile
   content = aFile.sysread(20)
   puts content
else
   puts "Unable to open file!"
end

Questa dichiarazione entrerà i primi 20 caratteri del file. Il puntatore file verrà collocato in una posizione nel file di 21 caratteri.

metodosyswrite

E 'possibile utilizzare il metodosyswriteper scrivere sul file. Quando si utilizza il metodo di syswrite, è necessario aprire il file in modalità di scrittura. Ad esempio:

#!/usr/bin/ruby

aFile = File.new("input.txt", "r+")
if aFile
   aFile.syswrite("ABCDEF")
else
   puts "Unable to open file!"
end

Le istruzioni sono scritte "ABCDEF" in un file.

metodoeach_byte

Questo metodo appartiene alla classe difile.Each_byte metodo iterativo è in grado di stringa di ogni personaggio. Considerare i seguenti esempi di codice:

#!/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

Uno dopo l'altro carattere viene passato CH variabile, e quindi visualizzata sullo schermo, come illustrato di seguito:

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...

metodoIO.readlines

classeFileè una sottoclasse di IO. Classe IO ha anche alcuni metodi per la manipolazione dei file.

IO.readlinesè IO classe un metodo. Il metodo progressivo restituisce il contenuto del file. Il codice seguente mostra un metodoIO.readlinesuso:

#!/usr/bin/ruby

arr = IO.readlines("input.txt")
puts arr[0]
puts arr[1]

In questo codice, la variabile è una matrice arr. Ogni riga è un file arr serieinput.txtun elemento. Pertanto, arr [0] conterrà la prima linea, e arr [1] conterrà la seconda riga del file.

metodoIO.foreach

Il metodo restituisce anche l'uscita progressiva.Foreachtra i diversi metodi e metodireadlinesè associato blocco metodoforeach.Tuttavia, a differenza del metodoreadlines metodoforeach invece di restituire un array. Ad esempio:

#!/usr/bin/ruby

IO.foreach("input.txt"){|block| puts block}

Questo codice metterà allaprovail contenuto del file passato blocco variabile progressivo, l'uscita sarà visualizzata sullo schermo.

Rinominare e cancellare file

È possibile rinominare e cancellare filerinominareecancellarei metodi.

L'esempio seguente rinomina un file già esistentetest1.txt:

#!/usr/bin/ruby

# 重命名文件 test1.txt 为 test2.txt
File.rename( "test1.txt", "test2.txt" )

L'esempio che segue per cancellare un file esistentetest2.txt:

#!/usr/bin/ruby

# 删除文件 test2.txt
File.delete("text2.txt")

modalità di file e la proprietà

Utilizzarechmodper cambiare il metodo con un / lista di accessi modello di maschera o di file permesso:

Esempi dei seguenti modifiche ad un modellotest.txtfile esistente per un valore di maschera:

#!/usr/bin/ruby

file = File.new( "test.txt", "w" )
file.chmod( 0755 )

La seguente tabella elenca le diverse maschere metodochmodpuò essere utilizzato:

掩码描述
0700rwx 掩码,针对所有者
0400r ,针对所有者
0200w ,针对所有者
0100x ,针对所有者
0070rwx 掩码,针对所属组
0040r ,针对所属组
0020w ,针对所属组
0010x ,针对所属组
0007rwx 掩码,针对其他人
0004r ,针对其他人
0002w ,针对其他人
0001x ,针对其他人
4000执行时设置用户 ID
2000执行时设置所属组 ID
1000保存交换文本,甚至在使用后也会保存

Accesso documento

Il seguente comando per controllare il file prima di aprire il file esiste già:

#!/usr/bin/ruby

File.open("file.rb") if File::exists?( "file.rb" )

Il seguente comando per interrogare se il file è in realtà un file:

#!/usr/bin/ruby

# 返回 true 或false
File.file?( "text.txt" ) 

Seguente comando per verificare se il dato nome di file è una directory:

#!/usr/bin/ruby

# 一个目录
File::directory?( "/usr/local/bin" ) # => true

# 一个文件
File::directory?( "file.rb" ) # => false

Sei il seguente comando per controllare il file leggibile, scrivibile, eseguibile:

#!/usr/bin/ruby

File.readable?( "test.txt" )   # => true
File.writable?( "test.txt" )   # => true
File.executable?( "test.txt" ) # => false

Il comando seguente controlla la dimensione del file a zero:

#!/usr/bin/ruby

File.zero?( "test.txt" )      # => true

Il seguente comando restituisce la dimensione del file:

#!/usr/bin/ruby

File.size?( "text.txt" )     # => 1002

Il comando seguente viene utilizzato per controllare il tipo di file:

#!/usr/bin/ruby

File::ftype( "test.txt" )     # => file

Metodo FTYPE restituisce un valore di quanto segue per individuare il tipo difile: file, directory, characterSpecial, blockSpecial, FIFO, collegamento, presao sconosciuto.

Il comando seguente viene utilizzato per controllare il file è stato creato, modificato, o ora dell'ultimo accesso:

#!/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

directory rubino

Tutti i file sono contenuti nella directory, Ruby fornisce un file di processo e directory.Fileclassi per lavorare coni file,le classi dir per directory di lavoro.

Sfoglia il catalogo

Per modificare la directory del programma Ruby, si prega di utilizzareDir.chdir.Esempi dei seguenti modifiche alla directory corrente è/ usr / bin.

Dir.chdir("/usr/bin")

È possibile visualizzare la correnteDir.pwd directory:

puts Dir.pwd # 返回当前目录,类似 /usr/bin

È possibile utilizzareDir.entriesottenere un elenco di file e directory all'interno della directory specificata:

puts Dir.entries("/usr/bin").join(' ')

Dir.entriesrestituisce un array contenente tutte le directory specificata.Dir.foreachfornisce la stessa funzionalità:

Dir.foreach("/usr/bin") do |entry|
   puts entry
end

Ottenere un elenco di directory di un modo più conciso è un metodo utilizzando l'array di classe Dir:

Dir["/usr/bin/*"]

Creare una directory

Dir.mkdirpuò essere utilizzato per creare la directory:

Dir.mkdir("mynewdir")

È inoltre possibile impostare le autorizzazioni per la nuova directory (non esistente directory) adottato mkdir:

Nota: Maschera 755 Imposta proprietario (proprietario), appartiene al gruppo (gruppo), tutti (mondo [qualcuno]) permessi rwxr-xr-x, dove r = leggere leggere, w = scrittura scrivere, x = eseguire l'esecuzione.

Dir.mkdir( "mynewdir", 755 )

rimuovere directory

Dir.deleteessere utilizzato per eliminare le directory.Dir.unlinkeDir.rmdirsvolgono la stessa funzione, ci fornisce la convenienza.

Dir.delete("testdir")

Creazione di un file directory temporanea &

I file temporanei vengono creati che sono semplicemente in fase di esecuzione del programma, ma non in modo permanente informazioni memorizzate.

Dir.tmpdirfornisce un percorso sulla directory temporanea di sistema corrente, che per impostazione predefinita, ma non è disponibile. Per rendereDir.tmpdira disposizione, con è necessaria la 'tmpdir' richiesto.

È possibileDir.tmpdireFile.joinutilizzati insieme per creare una piattaforma indipendente dal file temporanei:

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)

Questo codice crea un file temporaneo in cui scrivere i dati, e quindi eliminare il file. Rubino libreria standard contiene anche una libreria denominataFile Temporaneidella libreria può essere utilizzato per creare un file temporaneo:

require 'tempfile'
   f = Tempfile.new('tingtong')
   f.puts "Hello"
   puts f.path
   f.close

Built-in Funzioni

Di seguito fornisce un elenco completo di file e directory in funzioni built-in di Ruby: