class Hdfs::File
Public Class Methods
new(path, mode = "r")
click to toggle source
@param [String] path @param [String] mode 'r' read, 'w' write, 'a': apeend
# File lib/hdfs_jruby/file.rb, line 13 def initialize(path, mode = "r") #@conf = Hdfs::Configuration.new() #@fs = Hdfs::FileSystem.get(@conf) @fs = Hdfs.get_fs() @mode = mode if mode == "w" @stream = @fs.create(Hdfs::Path.new(path), false) elsif mode == "r" @stream = @fs.open(Hdfs::Path.new(path)) elsif mode == "a" p = Hdfs::Path.new(path) if !@fs.exists(p) @stream = @fs.create(Hdfs::Path.new(path), false) else if ! @fs.isFile(p) raise "path: #{path} is not file" end @stream = @fs.append(Hdfs::Path.new(path)) end end end
open(path, mode = "r") { |io| ... }
click to toggle source
@example
Hdfs::File.open("hoge.txt", "r") do | io | ... end Hdfs::File.open("hoge.txt", "r").each do | line | puts line end
@param [String] path @param [String] mode 'r' read, 'w' write, 'a': apeend
# File lib/hdfs_jruby/file.rb, line 47 def self.open(path, mode = "r") if block_given? io = File.new(path, mode).to_io begin yield(io) ensure begin io.close rescue end end else return File.new(path, mode).to_io end end
Public Instance Methods
__getobj__()
click to toggle source
@private
# File lib/hdfs_jruby/file.rb, line 90 def __getobj__ @stream end
__setobj__(obj)
click to toggle source
@private
# File lib/hdfs_jruby/file.rb, line 95 def __setobj__(obj) @stream = obj end
close()
click to toggle source
# File lib/hdfs_jruby/file.rb, line 84 def close @stream.close @fs.close end
seek(offset, whence = IO::SEEK_SET)
click to toggle source
@private
# File lib/hdfs_jruby/file.rb, line 79 def seek(offset, whence = IO::SEEK_SET) @stream.seek(offset) 0 end
sysread(length, outbuf = "")
click to toggle source
# File lib/hdfs_jruby/file.rb, line 68 def sysread(length, outbuf = "") buf = Java::byte[length].new n = @stream.read(buf) if n < 0 return nil end outbuf << java.lang.String.new(buf, 0, n).to_s end
syswrite(str)
click to toggle source
# File lib/hdfs_jruby/file.rb, line 63 def syswrite(str) n = @stream.write(str.to_java_bytes) return n.to_i end