Latest web development tutorials

Рубин файл ввод и вывод

Рубин предоставляет набор методов ввода / вывода, связанных с реализованных в модуле ядра (ядро). Весь метод ввода / вывода является производным от класса IO.

IOобеспечивает все подход класса на основе, например,чтение, запись, получает, кладет,Readline, GETC иPrintf.

В этом разделе описывается все доступные функции Ruby, основанные ввода / вывода. Для получения дополнительных функций, пожалуйста , см классIOв Ruby.

ставитзаявление

В предыдущем разделе , присваиваемое переменной, а затем использоватьпутызаявление распечатку.

ставитзаявление указывает на то, что программа выводит на экран значения , хранящиеся в переменных. Это добавит новую строку в конце каждой строки.

примеров

#!/usr/bin/ruby

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

Запуск в приведенном выше примере выход:

This is variable one
This is variable two

получаетзаявление

получаетутверждение может быть использовано для получения пользовательского ввода из стандартного экрана под названием STDIN.

примеров

Следующий код демонстрирует, как использовать получает заявление. Код предложит пользователю ввести значение, которое будет храниться в переменной Валу, окончательный будет напечатан на STDOUT.

#!/usr/bin/ruby

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

Запуск в приведенном выше примере выход:

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

заявлениеputc

Иставитдругое заявление, операторпомещаетвывод всей строки на экран, в то время какputcоператор можно использовать для вывода последовательности символов.

примеров

Выход следующего кода только символ H:

#!/usr/bin/ruby

str="Hello Ruby!"
putc str

Запуск в приведенном выше примере выход:

H

операторыпечати

печатьзаявления иставитаналогичное заявление. Единственное отличие состоит в том , что после того, как операторпомещаетвыход будет перейти к следующей строке, в то время как использование операторапечати,курсор позиционируется на той же линии.

примеров

#!/usr/bin/ruby

print "Hello World"
print "Good Morning"

Запуск в приведенном выше примере выход:

Hello WorldGood Morning

Открытие и закрытие файлов

На данный момент, вы должны читать и писать на стандартный ввод и вывод. Теперь мы рассмотрим, как фактические файлы данных.

методFile.new

Вы можете создать объектFileиспользуется для чтения методFile.new,писать или читать и писать, читать и писать разрешения в зависимости от параметров режима. И, наконец, вы можете использовать методfile.close, чтобы закрыть файл.

грамматика

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

методFile.open

Вы можете создать новый объект файла , используя методFile.open,а объект присваивается файлу файла. Тем не менее, есть одно различие междуFile.openиFile.newметодами. Разница заключается в том методFile.openможет быть связан с блоком, но неFile.newметод.

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

В следующей таблице перечислены открытые файлы в различных режимах:

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

Чтение и запись файлов

Метод простого ввода / вывода также может быть использован для всех файловых объектов. Таким образом, получает читает строку из стандартноговвода,aFile.gets AFile считывает строку из файлового объекта.

Тем не менее, I / O объект обеспечивает дополнительный набор методов доступа, предоставляет нам удобства.

sysreadметод

Вы можете использовать методsysread, чтобы прочитать содержимое файла. При использовании метода sysread, вы можете использовать любой один режим, чтобы открыть файл. Например:

Ниже приведен входной текстовый файл:

This is a simple text file for testing purpose.

Теперь давайте попробуем прочитать файл:

#!/usr/bin/ruby

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

Это заявление будет ввести первые 20 символов файла. Указатель на файл будет помещен в позицию в файле 21 символов.

syswriteметод

Вы можете использовать методsyswriteдля записи в файл. При использовании метода syswrite, вам необходимо открыть файл в режиме записи. Например:

#!/usr/bin/ruby

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

Заявления написаны "ABCDEF" в файл.

методeach_byte

Этот метод относится к классуFile.Each_byte итерационный метод способен строку каждого символа. Рассмотрим следующие примеры кода:

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

Один на один символ передается переменной ч, а затем отображается на экране, как показано ниже:

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

методIO.readlines

КлассFileявляется подклассом класса IO. IO класс также имеет некоторые методы для работы с файлами.

IO.readlinesявляется IO класс метод. Прогрессивный метод возвращает содержимое файла. Следующий код показывает методIO.readlinesиспользования:

#!/usr/bin/ruby

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

В этом коде переменная является массивом обр. Каждая строка представляет собой массив обр файлinput.txtэлемента. Поэтому, обр [0] будет содержать первую строку, а обр [1] будет содержать вторую строку файла.

методIO.foreach

Метод также возвращает прогрессивный выход.Foreachмежду различными методами и методамиreadlinesсвязан методЕогеаспблок. Однако, в отличие от методаreadlines,Еогеасп метод вместо возвращения массива. Например:

#!/usr/bin/ruby

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

Этот код будетпроверятьсодержимое файла передается переменной прогрессивный блок, то выход будет отображаться на экране.

Переименование и удаление файлов

Вы можете переименовывать и удалять файлы ,переименовыватьиудалятьметоды.

Следующий пример переименовывает файл , который уже существуетtest1.txt:

#!/usr/bin/ruby

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

В следующем примере для удаления существующего файлаtest2.txt:

#!/usr/bin/ruby

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

Режим файла и право собственности

ИспользуйтеCHMODизменить метод с шаблон маски или права доступа к файлам / список доступа:

Примеры следующих изменений в существующую модель файлtest.txtдля значения маски:

#!/usr/bin/ruby

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

В следующей таблице перечислены различные маскиCHMODметод может быть использован:

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

Доступ к документам

Следующую команду, чтобы проверить файл перед открытием файла уже существует:

#!/usr/bin/ruby

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

Следующая команда для запроса, является ли файл на самом деле файл:

#!/usr/bin/ruby

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

После команды для проверки данного файла является каталогом:

#!/usr/bin/ruby

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

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

Действительно ли следующую команду, чтобы проверить файл на чтение, запись, исполняемый файл:

#!/usr/bin/ruby

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

Следующая команда проверяет размер файла до нуля:

#!/usr/bin/ruby

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

Следующая команда возвращает размер файла:

#!/usr/bin/ruby

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

Следующая команда используется для проверки типа файла:

#!/usr/bin/ruby

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

Метод Ftype возвращает значение следующего , чтобы определить типфайла: файл, каталог, characterSpecial, blockSpecial, ФИФО, связь, сокетили неизвестен.

Следующая команда используется для проверки файл был создан, изменен, или время последнего доступа:

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

каталог Рубин

Все файлы содержатся в каталоге, Ruby обеспечивает процесс файлов и каталогов. классыфайловдля работы сфайлами,классы Dir для рабочего каталога.

Просмотрите каталог

Чтобы изменить каталог в программе Руби, пожалуйста , используйтеDir.chdir.Примеры следующих изменений в текущей директории/ USR / бен.

Dir.chdir("/usr/bin")

Вы можете просмотреть текущийDir.pwd каталога:

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

Вы можете использоватьDir.entriesполучить список файлов и каталогов внутри указанной директории:

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

Dir.entriesвозвращает массив , содержащий все указанный каталог.Dir.foreachобеспечивает ту же функциональность:

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

Получить каталог список более кратким способом является метод, используя массив класса Dir:

Dir["/usr/bin/*"]

Создание каталога

Dir.mkdirможет быть использован для создания каталога:

Dir.mkdir("mynewdir")

Можно также установить разрешения на новый каталог (не существующего каталога), принятой MKDIR:

Примечание: Маска 755 владельца Set (владельца), принадлежит к группе (группе), каждый (мир [кто - нибудь]) разрешения rwxr-Xr-х, где г = читать читать, писать W = писать, х = выполнить выполнение.

Dir.mkdir( "mynewdir", 755 )

удалить каталог

Dir.deleteиспользоваться для удаления каталогов.Dir.unlinkиDir.rmdirвыполняют ту же функцию, дает нам удобства.

Dir.delete("testdir")

Создание временного каталога File &

Временные файлы создаются, которые просто в процессе выполнения программы, но не постоянно хранится информация.

Dir.tmpdirобеспечивает путь в текущей системе временный каталог, который по умолчанию, но недоступен. Для того, чтобыDir.tmpdirдоступны, с требуемой 'TMPDIR' необходимо.

Вы можетеDir.tmpdirиFile.joinиспользоваться вместе , чтобы создать независимые от платформы временные файлы:

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)

Этот код создает временный файл, в котором для записи данных, а затем удалите файл. стандартная библиотека Рубин также содержит библиотеку с именемВременный файлбиблиотеки может быть использован для создания временного файла:

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

Встроенные функции

Ниже приводится полный список файлов и каталогов в встроенных функций в Ruby: