Class: Igo::FileMappedInputStream
- Inherits:
-
Object
- Object
- Igo::FileMappedInputStream
- Defined in:
- lib/igo/util.rb
Overview
ファイルにマッピングされた入力ストリーム
ファイルからバイナリデータを取得する場合、必ずこのクラスが使用される。
Class Method Summary collapse
-
.get_char_array(path) ⇒ Object
- char配列で読み取り path
-
入力ファイル.
-
.get_int_array(path) ⇒ Object
- int配列で読み取り path
-
入力ファイルのパス.
-
.get_string(path) ⇒ Object
- stringで読み取り path
-
入力ファイル.
Instance Method Summary collapse
-
#close ⇒ Object
入力ストリームを閉じる * newした場合、必ずcloseを呼ぶこと.
-
#get_char_array(count) ⇒ Object
- char配列で読み取り count
-
読み取りカウント.
-
#get_int ⇒ Object
int値で読み取り.
-
#get_int_array(count) ⇒ Object
- int配列で読み取り count
-
読み取りカウント.
-
#get_short_array(count) ⇒ Object
- short配列で読み取り count
-
読み取りカウント.
-
#get_string(count) ⇒ Object
- stringで読み取り count
-
読み取りカウント.
-
#initialize(path) ⇒ FileMappedInputStream
constructor
- 入力ストリームの初期化 path
-
入力ファイルのパス.
-
#size ⇒ Object
入力ファイルのサイズを返却する.
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
#close ⇒ Object
入力ストリームを閉じる
-
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_int ⇒ Object
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 |
#size ⇒ Object
入力ファイルのサイズを返却する
67 68 69 |
# File 'lib/igo/util.rb', line 67 def size return File::stat(@path).size end |