Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Параметр «максимальная длина» (max length) обязателен. Если задан параметр buffer, то он должен ссылаться на строку, в которой будут храниться данные.
data = sock.readpartial(128) # Читать не более 128 байтов.Метод
readpartialТаким образом, если в потоке есть данные, то
readpartialЕсли в потоке нет данных, но при этом достигнут конец файла, то
readpartialEOFErrorЕсли вызов блокирующий, то он ожидает, пока не произойдет одно из двух событий: придут новые данные или обнаружится конец файла. Если поступают данные, метод возвращает их вызывающей программе, а в случае обнаружения конца файла возбуждает исключение
EOFErrorПри вызове метода
sysreadreadpartial10.1.17. Манипулирование путевыми именами
Основными методами для работы с путевыми именами являются методы класса
File.dirnameFile.basenamebasenamestr = "/home/dave/podbay.rb"dir = File.dirname(str) # "/home/dave"file1 = File.basename(str) # "podbay.rb"file2 = File.basename(str,".rb") # "podbay"Хотя это методы класса
FileУпомянем также метод
File.splitinfo = File.split(str) # ["/home/dave","podbay.rb"]Метод класса
expand_path~~userDir.chdir("/home/poole/personal/docs")abs = File.expand_path("../../misc") # "/home/poole/misc"Если передать методу
pathfile = File.new("../../foobar")name = file.path # "../../foobar"Константа
File::SeparatorFile::SEPARATORМетод класса
joinpath = File.join("usr","local","bin","someprog")# path равно "usr/local/bin/someprog".# Обратите внимание, что в начало имени разделитель не добавляется!Не думайте, что методы
File.joinFile.split10.1.18. Класс Pathname
Следует знать о существовании стандартной библиотеки
pathnamePathnameDirFileFileTestFileUtilspath = Pathname.new("/home/hal")file = Pathname.new("file.txt")p2 = path + filepath.directory? # truepath.file? # falsep2.directory? # falsep2.file? # trueparts = path2.split # [Путевое имя:/home/hal, Путевое имя:file.txt]ext = path2.extname # .txtКак и следовало ожидать, имеется ряд вспомогательных методов. Метод
root?parent?childrenp1 = Pathname.new("//") # Странно, но допустимо.p1.root? # trueр2 = Pathname.new("/home/poole")p3 = p2.parent # Путевое имя:/homeitems = p2.children # Массив объектов Pathname # (все файлы и каталоги, являющиеся # непосредственными потомками р2).Как и следовало ожидать, методы
relativeabsolutep1 = Pathname.new("/home/dave")p1.absolute? # truep1.relative? # falseМногие методы, например
sizeunlinkFileFileTestFileUtils
