Лучшее руководство по Рубин файл ввод и вывод в 2024 году. В этом руководстве вы можете изучить ставитзаявление,получаетзаявление,заявлениеputc,операторыпечати,Открытие и закрытие файлов,Чтение и запись файлов,Переименование и удаление файлов,Режим файла и право собственности,Доступ к документам,каталог Рубин,Создание временного каталога File &,Встроенные функции,
Рубин файл ввод и вывод
Рубин предоставляет набор методов ввода / вывода, связанных с реализованных в модуле ядра (ядро). Весь метод ввода / вывода является производным от класса 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") # ru. 处理文件 aFile.close
методFile.open
Вы можете создать новый объект файла , используя методFile.open,а объект присваивается файлу файла. Тем не менее, есть одно различие междуFile.openиFile.newметодами. Разница заключается в том методFile.openможет быть связан с блоком, но неFile.newметод.
File.open("filename", "mode") do |aFile| # ru. 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.eru.
метод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метод может быть использован:
掩码 | 描述 |
---|---|
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 | 保存交换文本,甚至在使用后也会保存 |
Доступ к документам
Следующую команду, чтобы проверить файл перед открытием файла уже существует:
#!/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: