type=class
superclass=Object
included=Enumerable,File=Constants
extended=
library=_builtin

ŪϵǽΤΥ饹Ǥ

  * [[unknown:Traps: IO ݡȤΥץ˴ؤ|trap::IO]]

File::Constants ϡ[[c:File]]  IO ذưޤ

===[a:m17n] ¿첽 IO Υ󥳡ǥ

IO ֥Ȥϥ󥳡ǥ󥰤ޤ
󥳡ǥ󥰤αƶ᥽åɤȼʤ᥽åɤޤ

ƶ᥽åɤǤϡIO Υ󥳡ǥ󥰤˽ɤ߹ޤ줿ʸΥ󥳡ǥ󥰤ꤵޤ
ޤ IO Υ󥳡ǥ󥰤Ŭڤꤹ뤳Ȥˤꡢɤ߹߻񤭹߻ʸΥ󥳡ǥ󥰤
Ѵ뤳ȤǤޤ

==== 󥳡ǥ󥰤αƶ᥽åɤȼʤ᥽å

IO ɤ߹ߥ᥽åɤ2¸ߤޤ
ƥɤ߹ߥ᥽åɤȥХʥɤ߹ߥ᥽åɤǤ

ƥɤ߹ߥ᥽åɤ IO Υ󥳡ǥ󥰤αƶ򤦤ޤ
ܤϡ[[ref:io_encoding]]פ򻲾ȤƲ
ʲƥɤ߹ߥ᥽åɤǤ

 * [[m:IO.foreach]]
 * [[m:IO.readlines]]
 * [[m:IO#each]]
 * [[m:IO#each_line]]
 * [[m:IO#lines]]
 * [[m:IO#gets]]
 * [[m:IO#getc]]
 * [[m:IO#ungetc]]
 * [[m:IO#read]]
 * [[m:IO#readchar]]
 * [[m:IO#readline]]
 * [[m:IO#readlines]]

Хʥɤ߹ߥ᥽åɤ IO Υ󥳡ǥ󥰤αƶޤ
֤ʸΥ󥳡ǥ󥰤Ͼ ASCII-8BIT ˤʤޤ
ʲХʥɤ߹ߥ᥽åɤǤ

 * [[m:IO#read]](size) 
 * [[m:IO#read_nonblock]]
 * [[m:IO#readpartial]]
 * [[m:IO#sysread]]

ޤ񤭹ߥ᥽å [[m:IO#write]]  IO Υ󥳡ǥ󥰤αƶޤ
IO Τ٤Ƥν񤭹ߥ᥽åɤ [[m:IO#write]] ƤӤޤΤǡ
񤭹ߥ᥽åɤϤ٤ IO Υ󥳡ǥ󥰤αƶޤ

ϢΥ᥽åɤϥ󥳡ǥ󥰤αƶޤ
1ХȤñ̤Ȥưޤ

:

  f = File.open('t.txt', 'r+:euc-jp')
  p f.getc.encoding                             #=> Encoding::EUC_JP
  p f.read(1).encoding                          #=> Encoding::ASCII_8BIT 

====[a:io_encoding] IO Υ󥳡ǥ󥰤ȥ󥳡ǥ󥰤Ѵ

IO ֥Ȥϳ󥳡ǥ󥰤󥳡ǥ󥰤ޤ
󥳡ǥ󥰤Ȥ IO ɽեʤɤʸ󥳡ǥ󥰤Ǥ
󥳡ǥ󥰤Ȥ IO ɤ߹ޤ줿ʸ󡢤뤤 IO ν񤭹ߥ᥽åɤϤʸ
ʸ󥳡ǥ󥰤Ǥ

ʲλ̤꤬ޤ

: IO Υ󥳡ǥ󥰤ꤵƤʤ

  IO ƥɤ߹ߥ᥽åɤˤäɤ߹ޤ줿ʸΥ󥳡ǥ󥰤 [[m:Encoding.default_external]]
  ꤵޤΤȤºݤʸ󥳡ǥ󥰤ϸ줺Ѵ⤵ޤ

: 󥳡ǥ󥰤ΤߤꤵƤ

 IO ƥɤ߹ߥ᥽åɤˤäɤ߹ޤ줿ʸΥ󥳡ǥ󥰤ϳ󥳡ǥ
 ꤵޤΤȤºݤʸ󥳡ǥ󥰤ϸ줺Ѵ⤵ޤ

 IO ؽ񤭹ޤʸϳ󥳡ǥ󥰤ؤѴޤ
 󥳡ǥ󥰤ؤѴˡʬʤ㳰ȯޤ

: 󥳡ǥ󥰤󥳡ǥ(뤤 default_internal)ꤵƤ
 IO ƥɤ߹ߥ᥽åɤˤäɤ߹ޤ줿ʸϡ󥳡ǥ󥰤
 󥳡ǥ(뤤 default_internal)ؤѴޤ
 ꤵ줿ʸ󥳡ǥ󥰤ȼºݤʸ󥳡ǥ󥰤äƤ硢㳰ȯޤ
 󥳡ǥ󥰤  [[m:Encoding.default_internal]] ξȤꤵƤϡ
 󥳡ǥ󥰤ͥ褵ޤ

 IO ؽ񤭹ޤʸϳ󥳡ǥ󥰤ؤѴޤ
 󥳡ǥ󥰤ؤѴˡʬʤ㳰ȯޤ


IO Фƥ󥳡ǥ󥰤ꤹˡˤϡ [[m:IO.open]]  [[m:File.open]] 
Ϥ⡼ɤȤȤ˻ꤹΤ
 [[m:IO#set_encoding]] ȤäƻꤹΤ̤꤬ޤܤϤ줾Υ᥽åɤι
ȤƲ̾ԤˡȤޤ

1:

  f = File.open('file1')
  p f.getc.encoding        #=> Encoding::EUC_JP

2:

  f = File.open('t.txt', 'w+:shift_jis:euc-jp')
  f.write "\xB4\xC1\xBB\xFA"            # ʸ ""  EUC-JP ƥ
  f.rewind
  s = f.read(4)
  puts s.dump                           #=> "\x8A\xBF\x8E\x9A" 
                                        # 󥳡ǥ󥰤SJISѴƤ뤳Ȥʬ롣

===== ޤȤ

ʾޤȤȰʲɽΤ褦ˤʤޤ[[m:Encoding.default_external]] ϾꤵƤΤǡάƤޤ

ɤ߹ʸΥ󥳡ǥ
                                                    Хʥɤ߹ߥ᥽å      ƥɤ߹ߥ᥽å
 ----------------------------------------------------------------------------------------------------------
                                         ̵        ASCII-8BIT                   default_external
 
                            default_internal Τ        ASCII-8BIT                   default_internal
 
                         󥳡ǥ󥰤Τ        ASCII-8BIT                 󥳡ǥ
 
                     󥳡ǥ󥰻ꤢ        ASCII-8BIT                 󥳡ǥ
  
     󥳡ǥ󥰤 default_internal ξ        ASCII-8BIT                 󥳡ǥ

󥳡ǥ󥰤Ѵ
                                               Хʥɤ߹ߥ᥽å   ƥɤ߹ߥ᥽å   񤭹ߥ᥽å
 ---------------------------------------------------------------------------------------------------------------------
                                   ̵           Ѵʤ                 Ѵʤ                   Ѵʤ

                   󥳡ǥ󥰤Τ           Ѵʤ                 Ѵʤ                   Ѵ
         
                      default_internal Τ           Ѵʤ                 Ѵ                   Ѵ 
  
                   󥳡ǥ󥰤Τ           Ѵʤ                 Ѵ                   Ѵ

 󥳡ǥ󥰤󥳡ǥ           Ѵʤ                 Ѵ                   Ѵ

    󥳡ǥ󥰤 default_internal           Ѵʤ                 Ѵ                   Ѵ

==== ǥեȤγ󥳡ǥ󥰤λ

[[m:Encoding.default_external]] ϥޥɥץ -E ǻꤷޤ
-E ꤵʤäϼΤ褦̤ͥǷꤵޤ

 -E (ͥ) > -K > locale

==== ե̾Υ󥳡ǥ

ե̾ʸ󥳡ǥ󥰤ϥץåȥե˰¸ޤ
ե̾ʸ󥳡ǥ󥰤ꤵƤץåȥե(Win, Mac)Ǥϡ
󥳡ǥ󥰤ϰۤѴޤ(ͽ)UNIX ǤѴ줺ΤޤޥƥॳϤޤ

[[m:Dir.glob]], [[m:Dir.foreach]] ʤɤ֤ե̾Υ󥳡ǥ󥰤Ʊͤ˥ץåȥե¸Ǥ
UNIX Ǥ ASCII-8BIT Ǥ

==== binmode

Windows  IO ˤϥƥȥ⡼ɤȥХʥ⡼ɤȤ2Υ⡼ɤ¸ߤޤ
Υ⡼ɤϾ IO Υ󥳡ǥ󥰤ȤΩǤԤѴˤƶޤ


=== EOF Ǥɤ߹ߥ᥽åɤο񤤤ΰ㤤

ե EOF Ǥγɤ߹ߥ᥽åɤο񤤤ϰʲΤȤǤ
length Ǥ᥽åɤ˴ؤƤϡlength  nil ޤ 0 ꤷ硢
EOF ǤäƤ˶ʸ "" ֤ޤ

//emlist{
᥽å                      ΥեФ

IO.read(ե)           ""
IO.read(ե, length)   nil
IO.readlines(ե)      []
IO.foreach(ե)        ⤷ʤ
//}

//emlist{
᥽å                      EOFä

IO#each                       ⤷ʤ
IO#each_byte                  ⤷ʤ
IO#getc                       nil
IO#gets                       nil
IO#read()                     ""
IO#read(length)               nil
IO#read_nonblock              EOFError
IO#readchar                   EOFError
IO#readline                   EOFError
IO#readlines                  []
IO#readpartial                EOFError
IO#sysread                    EOFError
IO#bytes                      ̾ɤ
IO#lines                      ̾ɤ
//}
