Class: Igo::FileMappedInputStream

Inherits:
Object
  • Object
show all
Defined in:
lib/igo/util.rb

Overview

ファイルにマッピングされた入力ストリーム

ファイルからバイナリデータを取得する場合、必ずこのクラスが使用される。

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ FileMappedInputStream

入力ストリームの初期化

path

入力ファイルのパス



12
13
14
15
16
# File 'lib/igo/util.rb', line 12

def initialize(path)
  @path = path
  @cur = 0
  @file = open(path, "rb")
end

Class Method Details

.get_char_array(path) ⇒ Object

char配列で読み取り

path

入力ファイル



79
80
81
82
83
84
# File 'lib/igo/util.rb', line 79

def self.get_char_array(path)
  fmis = FileMappedInputStream.new(path)
  array = fmis.get_char_array(fmis.size / 2)
  fmis.close
  return array
end

.get_int_array(path) ⇒ Object

int配列で読み取り

path

入力ファイルのパス



31
32
33
34
35
36
# File 'lib/igo/util.rb', line 31

def self.get_int_array(path)
  fmis = FileMappedInputStream.new(path)
  array = fmis.get_int_array((File::stat(path).size)/4)
  fmis.close
  return array
end

.get_string(path) ⇒ Object

stringで読み取り

path

入力ファイル



58
59
60
61
62
63
64
# File 'lib/igo/util.rb', line 58

def self.get_string(path)
  fmis = FileMappedInputStream.new(path)
  str = fmis.get_string((File::stat(path).size)/2)
  fmis.close

  return str
end

Instance Method Details

#closeObject

入力ストリームを閉じる

  • newした場合、必ずcloseを呼ぶこと



73
74
75
# File 'lib/igo/util.rb', line 73

def close
  @file.close
end

#get_char_array(count) ⇒ Object

char配列で読み取り

count

読み取りカウント



46
47
48
# File 'lib/igo/util.rb', line 46

def get_char_array(count)
  return @file.read(count * 2).unpack("S!*")
end

#get_intObject

int値で読み取り



19
20
21
# File 'lib/igo/util.rb', line 19

def get_int()
  return @file.read(4).unpack("i*")[0]
end

#get_int_array(count) ⇒ Object

int配列で読み取り

count

読み取りカウント



25
26
27
# File 'lib/igo/util.rb', line 25

def get_int_array(count)
  return @file.read(count * 4).unpack("i*")
end

#get_short_array(count) ⇒ Object

short配列で読み取り

count

読み取りカウント



40
41
42
# File 'lib/igo/util.rb', line 40

def get_short_array(count)
  return @file.read(count * 2).unpack("s*")
end

#get_string(count) ⇒ Object

stringで読み取り

count

読み取りカウント



52
53
54
# File 'lib/igo/util.rb', line 52

def get_string(count)
  return @file.read(count * 2)
end

#sizeObject

入力ファイルのサイズを返却する



67
68
69
# File 'lib/igo/util.rb', line 67

def size
  return File::stat(@path).size
end