Latest web development tutorials

Rubi arquivo de entrada e de saída

Ruby fornece um conjunto de métodos de E / S relacionados com implementadas no módulo do kernel (kernel). Todos método de I / O é derivada da classe IO.

IOfornece toda a abordagem baseada em classes, tais comoleitura, gravação, fica, puts,readline, getc eprintf.

Esta seção irá explicar todas as funções de E / S baseadas em Rubi disponíveis. Para mais funções, consulte classeIOde Ruby.

colocadeclaração

Na seção anterior, você atribuído a uma variável e, em seguida, usar a impressão declaraçãoputs.

colocadeclaração indica que o programa mostra os valores armazenados em variáveis. Isto irá adicionar uma nova linha no fim de cada linha.

Exemplos

#!/usr/bin/ruby

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

Execute o exemplo acima saída é:

This is variable one
This is variable two

recebeStatement

recebedeclaração pode ser usado para obter a entrada do usuário a partir da tela padrão chamado STDIN.

Exemplos

O código a seguir demonstra como usar a declaração fica. O código irá solicitar que o usuário digite um valor que será armazenado no val variável, a final será impresso em STDOUT.

#!/usr/bin/ruby

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

Execute o exemplo acima saída é:

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

declaraçãoputc

Ecolocauma instrução diferente, a declaraçãocolocaa saída de toda a cadeia para o ecrã, enquanto a afirmaçãoputcpode ser usado para produzir uma sequência de caracteres.

Exemplos

A saída do seguinte código único personagem H:

#!/usr/bin/ruby

str="Hello Ruby!"
putc str

Execute o exemplo acima saída é:

H

instruções deimpressão

imprimirdeclarações ecolocauma declaração semelhante. A única diferença é que, após a indicaçãocolocaa saída irá saltar para a próxima linha, enquanto que a utilização de instrução deimpressão,o cursor está posicionado sobre a mesma linha.

Exemplos

#!/usr/bin/ruby

print "Hello World"
print "Good Morning"

Execute o exemplo acima saída é:

Hello WorldGood Morning

Abrir e fechar arquivos

A partir de agora, você tem que ler e escrever para a entrada e saída padrão. Agora, vamos olhar para a forma como os arquivos de dados reais.

métodoFile.new

Você pode criar um objeto dearquivoé usado para ler métodoFile.new,escrever ou ler e escrever, ler e escrever permissões, dependendo dos parâmetros de modo. Finalmente, você pode usar o métodoFile.Closepara fechar o arquivo.

gramática

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

métodoFile.open

Você pode criar um novo objeto de arquivo usando o métodoFile.open,eo objeto é atribuído para o arquivo arquivo. No entanto, existe uma diferença entre os métodos eFile.OpenFile.New. A diferença éFile.openmétodo pode ser associado com o bloco, mas não métodoFile.new.

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

A tabela a seguir lista os arquivos abertos em modos diferentes:

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

Leitura e gravação de arquivos

O método para simples de E / S também pode ser utilizado para todos os objectos de ficheiro. Assim, fica lê uma linha daentrada padrão,aFile.gets aFile lê uma linha do objeto de arquivo.

No entanto, I / O objeto fornece um conjunto adicional de métodos de acesso, fornece-nos com a conveniência.

métodosysread

Você pode usar o métodosysreadpara ler o conteúdo do arquivo. Ao usar o sysread método, você pode usar qualquer um modo para abrir o arquivo. Por exemplo:

O seguinte é o arquivo de texto de entrada:

This is a simple text file for testing purpose.

Agora vamos tentar ler o arquivo:

#!/usr/bin/ruby

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

Esta declaração vai entrar os primeiros 20 caracteres do arquivo. O ponteiro do arquivo será colocado em uma posição no arquivo de 21 caracteres.

métodosyswrite

Você pode usar osyswritemétodo para gravar o arquivo. Ao usar o syswrite método, você precisa abrir o arquivo em modo de gravação. Por exemplo:

#!/usr/bin/ruby

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

As declarações são escritas "ABCDEF" para um arquivo.

métodoeach_byte

Este método pertence aoarquivodeclasse.Each_byte forma iterativa é capaz de cadeia cada personagem. Considere os seguintes exemplos de código:

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

Um por um carácter variável é passado CH, e então exibido no ecrã, como mostrado abaixo:

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étodoIO.readlines

classeFileé uma subclasse da classe IO. classe IO também tem alguns métodos para a manipulação de arquivos.

IO.readlinesé IO classe um método. Esse método retorna o conteúdo de um arquivo linha por linha. O código a seguir mostra um métodoIO.readlinesusar:

#!/usr/bin/ruby

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

Nesse código, a variável é uma arr matriz. Cada linha é um arquivo arr matrizinput.txtum elemento. Portanto, arr [0] conterá a primeira linha, e arr [1] conterá a segunda linha do arquivo.

métodoIO.foreach

O método também retorna a saída progressiva.Foreachentre os diferentes métodos e métodosreadlinesestá associada bloco método deforeach.No entanto, ao contrário doreadlines método, ométodoforeachem vez de retornar um array. Por exemplo:

#!/usr/bin/ruby

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

Este código irátestaro conteúdo do arquivo passado bloco progressiva variável, então a saída será exibida na tela.

Renomear e apagar arquivos

Renomear Você poderenomeare apagar arquivos eexcluirmétodos.

O exemplo a seguir renomeia um arquivo que já existetest1.txt:

#!/usr/bin/ruby

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

O exemplo a seguir para excluir umtest2.txtarquivoexistente:

#!/usr/bin/ruby

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

modo de arquivo e de propriedade

Usechmodpara alterar o método com uma lista padrão de máscara e permissões de arquivo / access:

Exemplos de as seguintes alterações em um modelotest.txtarquivo existente para um valor de máscara:

#!/usr/bin/ruby

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

A tabela a seguir lista os diferentes máscaras métodochmodpodem ser usados:

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

Acesso a Documentos

O seguinte comando para verificar o arquivo antes de abrir o arquivo já existe:

#!/usr/bin/ruby

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

O seguinte comando para consultar se o arquivo é realmente um arquivo:

#!/usr/bin/ruby

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

Seguinte comando para verificar se o arquivo informado é um diretório:

#!/usr/bin/ruby

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

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

É o seguinte comando para verificar o arquivo legível, gravável, executável:

#!/usr/bin/ruby

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

O comando a seguir verifica o tamanho do arquivo para zero:

#!/usr/bin/ruby

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

A sequência de comando retorna o tamanho do ficheiro:

#!/usr/bin/ruby

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

O comando a seguir é usado para verificar o tipo de arquivo:

#!/usr/bin/ruby

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

Método ftype retorna um valor do seguinte para identificar o tipo dearquivo: arquivo, diretório, characterSpecial, blockSpecial, fifo, link, soqueteou desconhecida.

O comando a seguir é usado para verificar o arquivo foi criado, modificado ou último tempo de acesso:

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

diretório ruby

Todos os arquivos estão contidos no diretório, Ruby fornece uma processar arquivos e diretórios.Arquivoclasses para trabalhar comarquivos,classes Dir para diretório de trabalho.

Navegar pelo catálogo

Para alterar o diretório no programa Ruby, utilize oDir.chdir.Exemplos de as seguintes alterações para o diretório atual é/ usr / bin.

Dir.chdir("/usr/bin")

Você pode ver oDir.pwddiretórioatual:

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

Você pode usarDir.entriesobter os arquivos e diretórios dentro da listagem de diretório especificado:

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

Dir.entriesretorna um array contendo todo o diretório especificado.Dir.foreachfornece a mesma funcionalidade:

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

Obter uma listagem de diretório de uma maneira mais concisa é um método usando a matriz classe Dir:

Dir["/usr/bin/*"]

Crie um diretório

Dir.mkdirpode ser usado para criar o diretório:

Dir.mkdir("mynewdir")

Você também pode configurar permissões no novo diretório (não diretório existente), aprovada mkdir:

Nota: Máscara 755 Set proprietário (proprietário), pertence ao grupo (grupo), todos (mundo [ninguém]) permissões rwxr-xr-x, onde r = ler ler, w = escrever escrever, x = executar a execução.

Dir.mkdir( "mynewdir", 755 )

Remover diretório

Dir.deleteser usado para excluir diretórios.Dir.unlinkeDir.rmdirexecutar a mesma função, fornece-nos com a conveniência.

Dir.delete("testdir")

Criar um arquivo de diretório temporário &

arquivos temporários são criados que são simplesmente no processo de execução do programa, mas não armazenado permanentemente informações.

Dir.tmpdirfornece um caminho no diretório temporário do sistema atual, que por padrão, mas não está disponível. Para fazerDir.tmpdirdisponíveis, com é necessário o "tmpdir« necessária.

Você podeDir.tmpdireFile.joinusados em conjunto para criar uma independentes de plataforma arquivos temporários:

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)

Este código cria um arquivo temporário no qual a gravação de dados e exclua o arquivo. Rubi biblioteca padrão contém também uma biblioteca denominadaTempfileda biblioteca pode ser utilizada para criar um ficheiro temporário:

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

Funções internas

A seguir fornece uma lista completa de arquivos e diretórios em funções embutidas de Ruby: