Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Параметр «максимальная длина» (max length) обязателен. Если задан параметр buffer, то он должен ссылаться на строку, в которой будут храниться данные.
data = sock.readpartial(128) # Читать не более 128 байтов.
Метод
readpartial
Таким образом, если в потоке есть данные, то
readpartial
Если в потоке нет данных, но при этом достигнут конец файла, то
readpartial
EOFError
Если вызов блокирующий, то он ожидает, пока не произойдет одно из двух событий: придут новые данные или обнаружится конец файла. Если поступают данные, метод возвращает их вызывающей программе, а в случае обнаружения конца файла возбуждает исключение
EOFError
При вызове метода
sysread
readpartial
10.1.17. Манипулирование путевыми именами
Основными методами для работы с путевыми именами являются методы класса
File.dirname
File.basename
basename
str = "/home/dave/podbay.rb"
dir = File.dirname(str) # "/home/dave"
file1 = File.basename(str) # "podbay.rb"
file2 = File.basename(str,".rb") # "podbay"
Хотя это методы класса
File
Упомянем также метод
File.split
info = File.split(str) # ["/home/dave","podbay.rb"]
Метод класса
expand_path
~
~user
Dir.chdir("/home/poole/personal/docs")
abs = File.expand_path("../../misc") # "/home/poole/misc"
Если передать методу
path
file = File.new("../../foobar")
name = file.path # "../../foobar"
Константа
File::Separator
File::SEPARATOR
Метод класса
join
path = File.join("usr","local","bin","someprog")
# path равно "usr/local/bin/someprog".
# Обратите внимание, что в начало имени разделитель не добавляется!
Не думайте, что методы
File.join
File.split
10.1.18. Класс Pathname
Следует знать о существовании стандартной библиотеки
pathname
Pathname
Dir
File
FileTest
FileUtils
path = Pathname.new("/home/hal")
file = Pathname.new("file.txt")
p2 = path + file
path.directory? # true
path.file? # false
p2.directory? # false
p2.file? # true
parts = path2.split # [Путевое имя:/home/hal, Путевое имя:file.txt]
ext = path2.extname # .txt
Как и следовало ожидать, имеется ряд вспомогательных методов. Метод
root?
parent?
children
p1 = Pathname.new("//") # Странно, но допустимо.
p1.root? # true
р2 = Pathname.new("/home/poole")
p3 = p2.parent # Путевое имя:/home
items = p2.children # Массив объектов Pathname
# (все файлы и каталоги, являющиеся
# непосредственными потомками р2).
Как и следовало ожидать, методы
relative
absolute
p1 = Pathname.new("/home/dave")
p1.absolute? # true
p1.relative? # false
Многие методы, например
size
unlink
File
FileTest
FileUtils