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:
掩码 | 描述 |
---|---|
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 | 保存交换文本,甚至在使用后也会保存 |
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: