Class: 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

入力ファイルのパス



10
11
12
13
14
# File 'lib/igo/util.rb', line 10

def initialize(path)
  @path = path
  @cur = 0
  @file = open(path, "r+b")
end

Class Method Details

.get_char_array(path) ⇒ Object

char配列で読み取り

path

入力ファイル



77
78
79
80
81
82
# File 'lib/igo/util.rb', line 77

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

入力ファイルのパス



29
30
31
32
33
34
# File 'lib/igo/util.rb', line 29

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

入力ファイル



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

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を呼ぶこと



71
72
73
# File 'lib/igo/util.rb', line 71

def close
  @file.close
end

#get_char_array(count) ⇒ Object

char配列で読み取り

count

読み取りカウント



44
45
46
# File 'lib/igo/util.rb', line 44

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

#get_intObject

int値で読み取り



17
18
19
# File 'lib/igo/util.rb', line 17

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

#get_int_array(count) ⇒ Object

int配列で読み取り

count

読み取りカウント



23
24
25
# File 'lib/igo/util.rb', line 23

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

#get_short_array(count) ⇒ Object

short配列で読み取り

count

読み取りカウント



38
39
40
# File 'lib/igo/util.rb', line 38

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

#get_string(count) ⇒ Object

stringで読み取り

count

読み取りカウント



50
51
52
# File 'lib/igo/util.rb', line 50

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

#sizeObject

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



65
66
67
# File 'lib/igo/util.rb', line 65

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