Class: FileMappedInputStream
- Inherits:
-
Object
- Object
- 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
-
入力ファイルのパス
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
#close ⇒ Object
入力ストリームを閉じる
-
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_int ⇒ Object
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 |
#size ⇒ Object
入力ファイルのサイズを返却する
65 66 67 |
# File 'lib/igo/util.rb', line 65 def size return File::stat(@path).size end |