2016-03-05T17:16:26の更新内容

programming/netfx/filesystem/2_filereadwrite/index.wiki.txt

current previous
1,1596 0,0
+
${smdncms:title,ファイル入出力}
+
${smdncms:header_title,ファイル入出力 (System.IO.File)}
+
${smdncms:keywords,File,ファイル,読み込み,書き込み,上書き,追記}
+
${smdncms:document_versions,codelang=cs,codelang=vb}
+

          
+
#navi(..)
+

          
+
&msdn(netfx,type,System.IO.File){Fileクラス};に用意されているメソッドを使うことにより、ファイル名を指定するだけでファイルからの読み込みができ、またファイル名と書き込む内容を指定するだけでファイルへの書き込みを簡単に行うことができます。 Fileクラスでは、ファイル内容の読み書きを行う次のようなメソッドが用意されています。
+

          
+
|*ファイル内容の読み込みを行うためのメソッド
+
|~目的|~メソッド|~解説|h
+
|テキストファイルの内容をすべて読み込みたい&br;(単一の文字列として読み込む)|&msdn(netfx,member,System.IO.File.ReadAllText){File.ReadAllText};|[[解説へ>#File.ReadAllText]]|
+
|テキストファイルの内容を行単位で読み込みたい&br;(1行ごとに分割した配列または列挙子として読み込む)|&msdn(netfx,member,System.IO.File.ReadAllLines){File.ReadAllLines};&br;&msdn(netfx,member,System.IO.File.ReadLines){File.ReadLines};|[[解説へ>#File.ReadLines]]|
+
|バイナリファイルの内容をすべて読み込みたい&br;(バイト配列として読み込む)|&msdn(netfx,member,System.IO.File.ReadAllBytes){File.ReadAllBytes};|[[解説へ>#File.ReadAllBytes]]|
+

          
+
|*ファイル内容の書き込みを行うためのメソッド
+
|~目的|~メソッド|~解説|h
+
|テキストファイルとして書き込みたい&br;(文字列の内容を書き込む)|&msdn(netfx,member,System.IO.File.WriteAllText){File.WriteAllText};|[[解説へ>#File.WriteAllText]]|
+
|テキストファイルに行単位で書き込みたい&br;(1行ごとの内容を含む配列またはコレクションを書き込む)|&msdn(netfx,member,System.IO.File.WriteAllLines){File.WriteAllLines};|[[解説へ>#File.WriteAllLines]]|
+
|バイナリファイルとして書き込みたい&br;(バイト配列の内容を書き込む)|&msdn(netfx,member,System.IO.File.WriteAllBytes){File.WriteAllBytes};|[[解説へ>#File.WriteAllBytes]]|
+

          
+
|*ファイルへの追記を行うためのメソッド
+
|~目的|~メソッド|~解説|h
+
|テキストファイルへ追記したい&br;(文字列の内容を追記する)|&msdn(netfx,member,System.IO.File.AppendAllText){File.AppendAllText};|[[解説へ>#File.AppendAllText]]|
+
|テキストファイルへ行単位で追記したい&br;(1行ごとの内容を含む文字列配列を追記する)|&msdn(netfx,member,System.IO.File.AppendAllLines){File.AppendAllLines};|[[解説へ>#File.AppendAllLines]]|
+

          
+
#adunit
+

          
+

          
+
//*Fileクラスのメソッドだけではできないファイル入出力操作
+
Fileクラスのメソッドは言わばユーティリティメソッドで、ファイル内容すべてを読み書きするというごく基本的な読み込み・書き込み操作しか行えません。 そのため、ファイルの一部分のみを読み込んだり、データ構造やフォーマットが定められたファイルを扱う目的には不向きです。 ファイルの読み込み・書き込みに関して、目的に応じて以下のページをご覧ください。
+

          
+
:1文字ずつ読み込む・次の文字を先読みしながら読み込む|[[programming/netfx/stream/2_streamreader_streamwriter#StreamReader.Read]]
+
:改行文字を指定してテキストファイルを書き込む|[[programming/netfx/stream/2_streamreader_streamwriter#StreamWriter.NewLine]]
+
:標準入出力を読み込み元・書き込み先に指定する|[[programming/netfx/standard_streams/0_console]]
+
:読み込みの際に文字コードを判別する|[[programming/netfx/tips/determine_shiftjis_eucjp]]
+
:圧縮されたファイルを書き込む・読み込む|[[programming/netfx/fcl/System.IO.Compression.GZipStream#read_write_gz_file]]、[[programming/netfx/fcl/System.IO.Compression.ZipArchive]]
+
:暗号化されたファイルを書き込む・読み込む|[[programming/netfx/text_format_conversion#encryption]]
+
:BASE64などフォーマット変換した状態で書き込む・読み込む|[[programming/netfx/text_format_conversion#base64]]
+
:CSVファイル(カンマ区切り・タブ区切り)・固定幅のファイルを読み込む|[[programming/netfx/fcl/Microsoft.VisualBasic.FileIO.TextFieldParser]]
+
:XMLファイルを書き込む・読み込む|[[programming/netfx/xml/0_generate_write]]
+
:インスタンスをファイルに保存する・復元する|[[programming/netfx/serialization/0_abstract]]
+

          
+
このほか、ファイルの読み書きに際して細かい制御を行いたい場合は、[[programming/netfx/stream/1_1_filestream]]や[[programming/netfx/stream/2_streamreader_streamwriter]]・[[programming/netfx/stream/3_binaryreader_binarywriter]]を使います。
+

          
+
#relevantdocs
+

          
+
-[[programming/netfx/filesystem/0_path]]
+
-[[programming/netfx/stream]]
+
--[[programming/netfx/stream/1_1_filestream]]
+
--[[programming/netfx/stream/2_streamreader_streamwriter]]
+
-[[programming/netfx/serialization/0_abstract]]
+
-[[programming/netfx/conversion/0_basetype]]
+
--[[programming/netfx/conversion/0_basetype#StringConversion]]
+
--[[programming/netfx/conversion/0_basetype#ByteArrayConversion_BitConverter]]
+
-[[programming/netfx/text_format_conversion]]
+
-[[programming/netfx/string]]
+
--[[programming/netfx/string/1_operations]]
+
--[[programming/netfx/string/2_1_comparison]]
+

          
+
#relevantdocs-end
+

          
+

          
+
*ファイルからの読み込み [#System.IO.File_Read]
+

          
+
**File.ReadAllText (テキストファイルの読み込み) [#File.ReadAllText]
+
#tabpage(codelang=cs,container-title=File.ReadAllTextメソッドを使ってテキストファイルの内容をすべて読み込む)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    string text;
+

          
+
    // テキストファイルsample1.txtの内容をすべて読み込む (UTF-8で読み込む)
+
    text = File.ReadAllText("sample1.txt");
+

          
+
    // テキストファイルsample2.txtの内容をすべて読み込む (UTF-8で読み込む)
+
    text = File.ReadAllText("sample2.txt", Encoding.UTF8);
+

          
+
    // テキストファイルsample3.txtの内容をすべて読み込む (Shift_JISで読み込む)
+
    text = File.ReadAllText("sample3.txt", Encoding.GetEncoding("Shift_JIS"));
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim text As String
+

          
+
    ' テキストファイルsample1.txtの内容をすべて読み込む (UTF-8で読み込む)
+
    text = File.ReadAllText("sample1.txt")
+

          
+
    ' テキストファイルsample2.txtの内容をすべて読み込む (UTF-8で読み込む)
+
    text = File.ReadAllText("sample2.txt", Encoding.UTF8)
+

          
+
    ' テキストファイルsample3.txtの内容をすべて読み込む (Shift_JISで読み込む)
+
    text = File.ReadAllText("sample3.txt", Encoding.GetEncoding("Shift_JIS"))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
&msdn(netfx,member,System.IO.File.ReadAllText){File.ReadAllTextメソッド};は、指定されたファイルの内容をすべて読み込み、一つの文字列として返します。 また、文字コードが指定されていればその文字コードで読み込み、文字コードを指定しない場合はデフォルトでUTF-8として読み込みを行います。
+

          
+
|*File.ReadAllTextメソッドの呼び出し
+
|``File.ReadAllText(&var{ファイル名};)``|
+
|``File.ReadAllText(&var{ファイル名};, &var{文字コード};)``|
+

          
+
文字コードは&msdn(netfx,type,System.Text.Encoding){Encodingクラス};で指定します。 文字コードに対応するEncodingの取得方法は[[#charset]]に別途まとめています。
+

          
+
#remarks
+
ファイルから読み込んだ文字列を加工・編集したり、有用な部分を検索・抽出したりするにはStringクラスのメソッドを使います。 文字列操作のメソッドについては[[programming/netfx/string/1_operations]]および[[programming/netfx/string/2_1_comparison]]を参照してください。
+
#remarks-end
+

          
+
#remarks
+
ファイルから読み込んだ文字列を数値など別の型に変換するには&msdn(netfx,member,System.Int32.Parse){int.Parse};などのメソッドを使います。 文字列からの型変換については[[programming/netfx/conversion/0_basetype#StringConversion_ParseTryParse]]を参照してください。
+
#remarks-end
+

          
+
#remarks
+
テキストファイルからデータを読み込む具体例は[[#read_csv]]として別途まとめています。
+
#remarks-end
+

          
+
**File.ReadAllLines, File.ReadLines (行単位でのテキストファイルの読み込み) [#File.ReadLines]
+
#tabpage(codelang=cs,container-title=File.ReadAllLinesメソッドを使ってテキストファイルの内容を行ごとに分けて配列に読み込む)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    string[] lines;
+

          
+
    // ファイルsample1.txtの内容を行ごとに分けて配列に読み込む (UTF-8で読み込む)
+
    lines = File.ReadAllLines("sample1.txt");
+

          
+
    // ファイルsample2.txtの内容を行ごとに分けて配列に読み込む (UTF-8で読み込む)
+
    lines = File.ReadAllLines("sample2.txt", Encoding.UTF8);
+

          
+
    // ファイルsample3.txtの内容を行ごとに分けて配列に読み込む (Shift_JISで読み込む)
+
    lines = File.ReadAllLines("sample3.txt", Encoding.GetEncoding("Shift_JIS"));
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim lines() As String
+

          
+
    ' ファイルsample.txt1の内容を行ごとに分けて配列に読み込む (UTF-8で読み込む)
+
    lines = File.ReadAllLines("sample1.txt")
+

          
+
    ' ファイルsample.txt2の内容を行ごとに分けて配列に読み込む (UTF-8で読み込む)
+
    lines = File.ReadAllLines("sample2.txt", Encoding.UTF8)
+

          
+
    ' ファイルsample.txt3の内容を行ごとに分けて配列に読み込む (Shift_JISで読み込む)
+
    lines = File.ReadAllLines("sample3.txt", Encoding.GetEncoding("Shift_JIS"))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
&msdn(netfx,member,System.IO.File.ReadAllLines){FileReadAllLinesメソッド};は、指定されたファイルの内容を行ごとに分割して読み込み、文字列配列に格納して返します。 読み込む際、''改行文字は自動的に除去される''ため、``chop``・``chomp``などの操作は不要です。 また、文字コードが指定されていればその文字コードで読み込み、文字コードを指定しない場合はデフォルトでUTF-8として読み込みを行います。
+

          
+
|*File.ReadAllTextメソッドの呼び出し
+
|``File.ReadAllLines(&var{ファイル名};)``|
+
|``File.ReadAllLines(&var{ファイル名};, &var{文字コード};)``|
+

          
+
文字コードは&msdn(netfx,type,System.Text.Encoding){Encodingクラス};で指定します。 文字コードに対応するEncodingの取得方法は[[#charset]]に別途まとめています。
+

          
+
#remarks
+
ファイルから読み込んだ文字列を加工・編集したり、有用な部分を検索・抽出したりするにはStringクラスのメソッドを使います。 文字列操作のメソッドについては[[programming/netfx/string/1_operations]]および[[programming/netfx/string/2_1_comparison]]を参照してください。
+
#remarks-end
+

          
+
#remarks
+
ファイルから読み込んだ文字列を数値など別の型に変換するには&msdn(netfx,member,System.Int32.Parse){int.Parse};などのメソッドを使います。 文字列からの型変換については[[programming/netfx/conversion/0_basetype#StringConversion_ParseTryParse]]を参照してください。
+
#remarks-end
+

          
+
#remarks
+
テキストファイルからデータを読み込む具体例は[[#read_csv]]として別途まとめています。
+
#remarks-end
+

          
+

          
+

          
+

          
+

          
+
File.Read''All''Linesメソッドは、すべての行を読み込み終えるまで処理が戻りません。 一方&msdn(netfx,member,System.IO.File.ReadLines){File.ReadLinesメソッド};では、一行読み込むごとに処理が戻ります。 したがって、次のような場合にはFile.Read''All''LinesメソッドよりもFile.ReadLinesメソッドを使ったほうがメリットがあります。
+

          
+
:巨大なファイルを読み込んで一行ずつ処理するような場合|File.ReadLinesメソッドでは一行ずつ読み込んで逐次処理できるため、必要最小限のメモリを使用します。 File.Read''All''Linesメソッドではすべての行を読み込んでから次の処理に移るため、ファイルサイズに比例したメモリを専有します。
+
:ファイルの先頭の方に読み込みたい内容があるなど、必ずしもファイルを末尾まで読み込まなくてもよい場合|File.ReadLinesメソッドではファイルの先頭から逐次読み込み、必要なくなった時点で読み込みを中断できます。 File.Read''All''Linesメソッドでは、目的には必要のない行であっても、すべて読み込んでからでなければ次の処理を行えません。
+

          
+
#tabpage(codelang=cs,container-title=File.ReadLinesメソッドを使ってファイルの先頭3行のみを読み込む)
+
#code{{
+
using System;
+
using System.Collections.Generic;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    var lines = new List<string>();
+

          
+
    // ファイルsample.txtの内容を最大で3行分読み込む
+
    foreach (var line in File.ReadLines("sample.txt", Encoding.UTF8)) {
+
      lines.Add(line); // 行の内容をListに追加
+

          
+
      if (3 <= lines.Count)
+
        break; // 3行目に達した時点で読み込みを中断する
+
    }
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.Collections.Generic
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim lines As New List(Of String)()
+

          
+
    ' ファイルsample.txtの内容を最大で3行分読み込む
+
    For Each line As String In File.ReadLines("sample.txt", Encoding.UTF8)
+
      lines.Add(line) ' 行の内容をListに追加
+

          
+
      If 3 <= lines.Count Then Exit For ' 3行目に達した時点で読み込みを中断する
+
    Next
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
File.Read''All''LinesメソッドとFile.ReadLinesメソッドでは動作は異なりますが、呼び出し方はどちらも同じです。
+

          
+
|*File.ReadLinesメソッドの呼び出し
+
|``File.ReadLines(&var{ファイル名};)``|
+
|``File.ReadLines(&var{ファイル名};, &var{文字コード};)``|
+

          
+

          
+

          
+

          
+

          
+
**File.ReadAllBytes (バイナリファイルの読み込み) [#File.ReadAllBytes]
+
#tabpage(codelang=cs,container-title=File.ReadAllBytesメソッドを使ってバイナリファイルの内容をすべて読み込む)
+
#code{{
+
using System;
+
using System.IO;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    byte[] bytes;
+

          
+
    // バイナリファイルsample.datの内容をすべて読み込む
+
    bytes = File.ReadAllBytes("sample.dat");
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim bytes() As Byte
+

          
+
    ' バイナリファイルsample.datの内容をすべて読み込む
+
    bytes = File.ReadAllBytes("sample.dat")
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
&msdn(netfx,member,System.IO.File.ReadAllBytes){File.ReadAllBytesメソッド};は、指定されたファイルの内容をすべて読み込み、一つのバイト配列として返します。 バイナリファイルだけでなく、テキストファイルの''生の''内容(デコードされていないバイナリ表現の内容)を読み込む場合にも使うことができます。
+

          
+
|*File.ReadAllBytesメソッドの呼び出し
+
|``File.ReadAllBytes(&var{ファイル名};)``|
+

          
+
#remarks
+
バイト配列の一部分を数値など別の型に変換するには、&msdn(netfx,member,System.BitConverter.ToInt32){BitConverter.ToInt32};などのメソッドを使います。 詳しくは[[programming/netfx/conversion/0_basetype#ByteArrayConversion_BitConverter]]を参照してください。
+
#remarks-end
+

          
+

          
+

          
+

          
+
*ファイルへの書き込み [#System.IO.File_Write]
+

          
+
**File.WriteAllText (テキストファイルの書き込み) [#File.WriteAllText]
+
#tabpage(codelang=cs,container-title=File.WriteAllTextメソッドを使って文字列の内容をテキストファイルに書き込む)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    var text = "text日本語テキスト";
+

          
+
    // 文字列textの内容をテキストファイルsample1.txtに書き込む (UTF-8で書き込む)
+
    File.WriteAllText("sample1.txt", text);
+

          
+
    // 文字列textの内容をテキストファイルsample2.txtに書き込む (UTF-8で書き込む)
+
    File.WriteAllText("sample2.txt", text, Encoding.UTF8);
+

          
+
    // 文字列textの内容をテキストファイルsample3.txtに書き込む (Shift_JISで書き込む)
+
    File.WriteAllText("sample3.txt", text, Encoding.GetEncoding("Shift_JIS"));
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim text As String = "text日本語テキスト"
+

          
+
    ' 文字列textの内容をテキストファイルsample1.txtに書き込む (UTF-8で書き込む)
+
    File.WriteAllText("sample1.txt", text)
+

          
+
    ' 文字列textの内容をテキストファイルsample2.txtに書き込む (UTF-8で書き込む)
+
    File.WriteAllText("sample2.txt", text, Encoding.UTF8)
+

          
+
    ' 文字列textの内容をテキストファイルsample3.txtに書き込む (Shift_JISで書き込む)
+
    File.WriteAllText("sample3.txt", text, Encoding.GetEncoding("Shift_JIS"))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
&msdn(netfx,member,System.IO.File.WriteAllText){File.WriteAllTextメソッド};は、指定された文字列の内容を指定されたファイルへと書き込みます。 また、文字コードが指定されていれば、その文字コードで書き込みを行い、文字コードを指定しない場合はデフォルトでUTF-8として書き込みを行います。
+

          
+
|*File.WriteAllTextメソッドの呼び出し
+
|``File.WriteAllText(&var{ファイル名};, &var{ファイルに書き込む内容};)``|
+
|``File.WriteAllText(&var{ファイル名};, &var{ファイルに書き込む内容};, &var{文字コード};)``|
+

          
+
文字コードは&msdn(netfx,type,System.Text.Encoding){Encodingクラス};で指定します。 文字コードに対応するEncodingの取得方法は[[#charset]]に別途まとめています。
+

          
+

          
+

          
+

          
+

          
+
**File.WriteAllLines (行単位でのテキストファイルの書き込み) [#File.WriteAllLines]
+
#tabpage(codelang=cs,container-title=File.WriteAllLinesメソッドを使ってListに格納された行ごとの内容をファイルに書き込む)
+
#code{{
+
using System;
+
using System.Collections.Generic;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // 行ごとの内容を格納するList
+
    var lines = new List<string>();
+

          
+
    lines.Add("1行目");
+
    lines.Add("2行目");
+
    lines.Add("3行目");
+

          
+
    // List内の各文字列を1行としてテキストファイルsample1.txtに書き込む (UTF-8で書き込む)
+
    File.WriteAllLines("sample1.txt", lines);
+

          
+
    // List内の各文字列を1行としてテキストファイルsample2.txtに書き込む (UTF-8で書き込む)
+
    File.WriteAllLines("sample2.txt", lines, Encoding.UTF8);
+

          
+
    // List内の各文字列を1行としてテキストファイルsample3.txtに書き込む (Shift_JISで書き込む)
+
    File.WriteAllLines("sample3.txt", lines, Encoding.GetEncoding("Shift_JIS"));
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.Collections.Generic
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' 行ごとの内容を格納するList
+
    Dim lines As New List(Of String)()
+

          
+
    lines.Add("1行目")
+
    lines.Add("2行目")
+
    lines.Add("3行目")
+

          
+
    ' List内の各文字列を1行としてテキストファイルsample1.txtに書き込む (UTF-8で書き込む)
+
    File.WriteAllLines("sample1.txt", lines)
+

          
+
    ' List内の各文字列を1行としてテキストファイルsample2.txtに書き込む (UTF-8で書き込む)
+
    File.WriteAllLines("sample2.txt", lines, Encoding.UTF8)
+

          
+
    ' List内の各文字列を1行としてテキストファイルsample3.txtに書き込む (Shift_JISで書き込む)
+
    File.WriteAllLines("sample3.txt", lines, Encoding.GetEncoding("Shift_JIS"))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
&msdn(netfx,member,System.IO.File.WriteAllLines){File.WriteAllLinesメソッド};は、指定された文字列配列や文字列コレクションに格納されている内容を行ごとの内容として、指定されたファイルへと書き込みます。 書き込みに際して、各行の内容に続けて改行文字が自動的に書き込まれます。 また、文字コードが指定されていれば、その文字コードで書き込みを行い、文字コードを指定しない場合はデフォルトでUTF-8として書き込みを行います。
+

          
+
|*File.WriteAllLinesメソッドの呼び出し
+
|``File.WriteAllLines(&var{ファイル名};, &var{ファイルに書き込む内容(文字列配列または文字列のコレクション)};)``|
+
|``File.WriteAllLines(&var{ファイル名};, &var{ファイルに書き込む内容(文字列配列または文字列のコレクション)};, &var{文字コード};)``|
+

          
+
文字コードは&msdn(netfx,type,System.Text.Encoding){Encodingクラス};で指定します。 文字コードに対応するEncodingの取得方法は[[#charset]]に別途まとめています。
+

          
+
File.WriteAllLinesメソッドでの書き込みにおける改行文字に関しては後述の[[#newline]]を参照してください。
+

          
+

          
+

          
+

          
+
**File.WriteAllBytes (バイナリファイルの書き込み) [#File.WriteAllBytes]
+
#tabpage(codelang=cs,container-title=File.WriteAllBytesメソッドを使ってバイト配列の内容をファイルに書き込む)
+
#code{{
+
using System;
+
using System.IO;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    var bytes = new byte[] {0x01, 0x23, 0x45, 0x67};
+

          
+
    // バイト配列bytesの内容をバイナリファイルsample.datに書き込む
+
    File.WriteAllBytes("sample.dat", bytes);
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim bytes() As Byte = New Byte() {&H01, &H23, &H45, &H67}
+

          
+
    ' バイト配列bytesの内容をバイナリファイルsample.datに書き込む
+
    File.WriteAllBytes("sample.dat", bytes)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
&msdn(netfx,member,System.IO.File.WriteAllBytes){File.WriteAllBytesメソッド};は、指定されたバイト配列の内容を指定されたファイルへと書き込みます。
+

          
+
|*File.WriteAllBytesメソッドの呼び出し
+
|``File.WriteAllBytes(&var{ファイル名};, &var{ファイルに書き込む内容(バイト配列)};)``|
+

          
+
File.WriteAllBytesではバイト配列の一部分だけを書き込むことはできません。 一部分だけを書き込みたい場合は、[[BinaryWriterクラス>programming/netfx/stream/3_binaryreader_binarywriter]]や[[StreamクラスのWriteメソッド>programming/netfx/stream/0_abstract#Stream.Write]]を使って書き込む必要があります。
+

          
+
また、バイト型以外の配列を書き込むこともできません。 その場合もやはり[[BinaryWriterクラス>programming/netfx/stream/3_binaryreader_binarywriter]]を使って書き込むか、あるいは事前にバイト配列へ変換してから書き込む必要があります。
+

          
+
#remarks
+
バイト配列への変換については[[programming/netfx/conversion/0_basetype#ByteArrayConversion]]を参照してください。
+
#remarks-end
+

          
+

          
+

          
+

          
+

          
+
*ファイル内容の追記 [#System.IO.File_Append]
+
**File.AppendAllText (テキストファイルへの追記) [#File.AppendAllText]
+
#tabpage(codelang=cs,container-title=File.AppendAllTextメソッドを使って文字列をファイルの末尾に追記する)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    var text = "追記内容";
+

          
+
    // 文字列textの内容をテキストファイルsample1.txtに追記する (UTF-8で書き込む)
+
    File.AppendAllText("sample1.txt", text);
+

          
+
    // 文字列textの内容をテキストファイルsample2.txtに追記する (UTF-8で書き込む)
+
    File.AppendAllText("sample2.txt", text, Encoding.UTF8);
+

          
+
    // 文字列textの内容をテキストファイルsample3.txtに追記する (Shift_JISで書き込む)
+
    File.AppendAllText("sample3.txt", text, Encoding.GetEncoding("Shift_JIS"));
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim text As String = "追記内容"
+

          
+
    ' 文字列textの内容をテキストファイルsample1.txtに追記する (UTF-8で書き込む)
+
    File.AppendAllText("sample1.txt", text)
+

          
+
    ' 文字列textの内容をテキストファイルsample2.txtに追記する (UTF-8で書き込む)
+
    File.AppendAllText("sample2.txt", text, Encoding.UTF8)
+

          
+
    ' 文字列textの内容をテキストファイルsample3.txtに追記する (Shift_JISで書き込む)
+
    File.AppendAllText("sample3.txt", text, Encoding.GetEncoding("Shift_JIS"))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
&msdn(netfx,member,System.IO.File.AppendAllText){File.AppendAllTextメソッド};は、指定された文字列の内容を指定されたファイルの末尾へと追記します。 また、文字コードが指定されていれば、その文字コードで書き込みを行い、文字コードを指定しない場合はデフォルトでUTF-8として書き込みを行います。
+

          
+
|*File.AppendAllTextメソッドの呼び出し
+
|``File.AppendAllText(&var{ファイル名};, &var{ファイルに追記する内容};)``|
+
|``File.AppendAllText(&var{ファイル名};, &var{ファイルに追記する内容};, &var{文字コード};)``|
+

          
+
文字コードは&msdn(netfx,type,System.Text.Encoding){Encodingクラス};で指定します。 文字コードに対応するEncodingの取得方法は[[#charset]]に別途まとめています。 追記前のファイルと異なる文字コードを指定して追記した場合は文字化けが起こるので注意してください。
+

          
+

          
+

          
+

          
+
File.AppendAllTextではファイルの''先頭に''追記することはできません。 先頭へ追記する場合は、次の例のように一旦ファイルの内容を文字列などに読み込み、その先頭に追記したい内容を追加した後に改めてファイルに書き込むなどする必要があります。
+

          
+
#tabpage(codelang=cs,container-title=File.ReadAllTextメソッド・WriteAllTextメソッドを使ってファイルの先頭に追記する)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // ファイルの現在の内容を読み込む
+
    var text = File.ReadAllText("sample.txt", Encoding.UTF8);
+

          
+
    // 読み込んだ内容の'前に'追記内容を追加する
+
    text = "追記内容" + text;
+

          
+
    // 追記した内容をファイルへ書き込む
+
    File.WriteAllText("sample.txt", text, Encoding.UTF8);
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' ファイルの現在の内容を読み込む
+
    Dim text As String = File.ReadAllText("sample.txt", Encoding.UTF8)
+

          
+
    ' 読み込んだ内容の"前に"追記内容を追加する
+
    text = "追記内容" + text
+

          
+
    ' 追記した内容をファイルへ書き込む
+
    File.WriteAllText("sample.txt", text, Encoding.UTF8)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+

          
+

          
+

          
+
**File.AppendAllLines (行単位でのテキストファイルへの追記) [#File.AppendAllLines]
+
#tabpage(codelang=cs,container-title=File.AppendAllLinesメソッドを使ってListに格納された行ごとの内容をファイルに追記する)
+
#code{{
+
using System;
+
using System.Collections.Generic;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // 行ごとの内容を格納するList
+
    var lines = new List<string>();
+

          
+
    lines.Add("追記1行目");
+
    lines.Add("追記2行目");
+
    lines.Add("追記3行目");
+

          
+
    // List内の各文字列を1行としてテキストファイルsample1.txtに追記する (UTF-8で書き込む)
+
    File.AppendAllLines("sample1.txt", lines);
+

          
+
    // List内の各文字列を1行としてテキストファイルsample2.txtに追記する (UTF-8で書き込む)
+
    File.AppendAllLines("sample2.txt", lines, Encoding.UTF8);
+

          
+
    // List内の各文字列を1行としてテキストファイルsample3.txtに追記する (Shift_JISで書き込む)
+
    File.AppendAllLines("sample3.txt", lines, Encoding.GetEncoding("Shift_JIS"));
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.Collections.Generic
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' 行ごとの内容を格納するList
+
    Dim lines As New List(Of String)()
+

          
+
    lines.Add("追記1行目")
+
    lines.Add("追記2行目")
+
    lines.Add("追記3行目")
+

          
+
    ' List内の各文字列を1行としてテキストファイルsample1.txtに追記する (UTF-8で書き込む)
+
    File.AppendAllLines("sample1.txt", lines)
+

          
+
    ' List内の各文字列を1行としてテキストファイルsample2.txtに追記する (UTF-8で書き込む)
+
    File.AppendAllLines("sample2.txt", lines, Encoding.UTF8)
+

          
+
    ' List内の各文字列を1行としてテキストファイルsample3.txtに追記する (Shift_JISで書き込む)
+
    File.AppendAllLines("sample3.txt", lines, Encoding.GetEncoding("Shift_JIS"))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
&msdn(netfx,member,System.IO.File.AppendAllLines){File.AppendAllLinesメソッド};は、指定された文字列配列や文字列コレクションに格納されている内容を行ごとの内容として、指定されたファイルの末尾に追記します。 書き込みに際して、各行の内容に続けて改行文字が自動的に書き込まれます。 また、文字コードが指定されていれば、その文字コードで書き込みを行い、文字コードを指定しない場合はデフォルトでUTF-8として書き込みを行います。
+

          
+
|*File.AppendAllLinesメソッドの呼び出し
+
|``File.AppendAllLines(&var{ファイル名};, &var{ファイルに追記する内容(文字列配列または文字列のコレクション)};)``|
+
|``File.AppendAllLines(&var{ファイル名};, &var{ファイルに追記する内容(文字列配列または文字列のコレクション)};, &var{文字コード};)``|
+

          
+
文字コードは&msdn(netfx,type,System.Text.Encoding){Encodingクラス};で指定します。 文字コードに対応するEncodingの取得方法は[[#charset]]に別途まとめています。 追記前のファイルと異なる文字コードを指定して追記した場合は文字化けが起こるので注意してください。
+

          
+
File.AppendAllLinesメソッドでの追記における改行文字に関しては後述の[[#newline]]を参照してください。
+

          
+

          
+

          
+

          
+
File.AppendAllLinesではファイルの''先頭に''追記することはできません。 先頭へ追記する場合は、一旦ファイルの内容を文字列などに読み込み、その先頭に追記したい内容を追加した後に改めてファイルに書き込むなどする必要があります。 具体的な実装方法については[[#File.AppendAllText]]での例を参照してください。
+

          
+

          
+

          
+
*改行文字 [#newline]
+
File.WriteAllLinesメソッドおよびFile.AppendAllLinesメソッドを使って行単位で書き込む際、プラットフォームで定義されている改行文字が用いられます。 すなわち、Windows系の環境では``CRLF``、Macintosh系では``CR``、Unix系では``LF``が使われます。
+

          
+
Fileクラスの書き込みメソッドでは、引数などで書き込み時の改行文字を指定することはできません。 そのため、実行環境によらず特定の改行文字を指定して書き込みたい場合は、次の例のように目的の改行文字で連結した文字列を[[File.WriteAllTextメソッド>#File.WriteAllText]]で書き込むか、あるいは[[StreamWriterを用いて書き込む>programming/netfx/stream/2_streamreader_streamwriter#StreamWriter.NewLine]]必要があります。
+

          
+
#tabpage(codelang=cs,container-title=目的の改行文字で連結した文字列をファイルに書き込む)
+
#code{{
+
using System;
+
using System.Collections.Generic;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // 行ごとの内容を格納するList
+
    var lines = new List<string>();
+

          
+
    lines.Add("1行目");
+
    lines.Add("2行目");
+
    lines.Add("3行目");
+

          
+
    // linesの内容を改行文字LFで結合した文字列を作成する
+
    var text = string.Join("\n", lines);
+

          
+
    // 結合した文字列textの内容をテキストファイルsample.txtに書き込む
+
    // (LFで改行した状態の内容が書き込まれる)
+
    File.WriteAllLines("sample.txt", lines, Encoding.UTF8);
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.Collections.Generic
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' 行ごとの内容を格納するList
+
    Dim lines As New List(Of String)()
+

          
+
    lines.Add("1行目")
+
    lines.Add("2行目")
+
    lines.Add("3行目")
+

          
+
    ' linesの内容を改行文字LFで結合した文字列を作成する
+
    Dim text As String = String.Join(ControlChars.LF, lines)
+

          
+
    ' 結合した文字列textの内容をテキストファイルsample.txtに書き込む
+
    ' (LFで改行した状態の内容が書き込まれる)
+
    File.WriteAllLines("sample.txt", lines, Encoding.UTF8)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#remarks
+
プラットフォームの改行文字を取得・参照する方法については[[programming/netfx/environment/0_platform#SystemAndPlatform_NewLine]]を参照してください。
+
#remarks-end
+

          
+
#remarks
+
StreamWriterを用いて改行文字を指定して書き込む方法については[[programming/netfx/stream/2_streamreader_streamwriter#StreamWriter.NewLine]]を参照してください。
+
#remarks-end
+

          
+

          
+

          
+

          
+
なお、[[ReadAllLinesメソッド・ReadLinesメソッド>#File.ReadLines]]では、プラットフォームによらず``CRLF``・``CR``・``LF``のすべてが改行として扱われた上で読み込まれます。 特定の文字だけを改行として扱いたい場合は、次の例のようにいったん[[ReadAllTextメソッド>#File.ReadAllText]]を用いてすべての改行文字を維持した状態で読み込んだのち、[[String.Splitメソッド>programming/netfx/string/1_operations#String.Split]]によって特定の改行文字で行に分割するなどの処理を行う必要があります。
+

          
+
#tabpage(codelang=cs,container-title=CRのみを改行として行単位で読み込む(不完全なコード))
+
#code{{
+
using System;
+
using System.IO;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // 改行文字を維持したままファイル内容をすべて読み込む
+
    // (sample.txtは改行文字が混在した内容を想定)
+
    var text = File.ReadAllText("sample.txt");
+

          
+
    // CRのみを改行として読み込んだ内容を行に分割する
+
    var lines = text.Split('\r');
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' 改行文字を維持したままファイル内容をすべて読み込む
+
    ' (sample.txtは改行文字が混在した内容を想定)
+
    Dim text As String = File.ReadAllText("sample.txt")
+

          
+
    ' CRのみを改行として読み込んだ内容を行に分割する
+
    Dim lines() As String = text.Split(ControlChars.CR)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#remarks
+
この例では、"``CRLF``"のシーケンスを適切に扱えません。 例えば"&var{行1};``CRLF``&var{行2};…"のように"``CRLF``"のシーケンスで改行されている場合は"&var{行1}; <改行> ``LF``&var{行2};…"として分割されます。 "``CRLF``"のシーケンスを改行とみなさずそのまま維持するには、より詳細に分割処理を記述する必要があります。
+
#remarks-end
+

          
+

          
+

          
+
改行文字が混在するファイルを読み込み、特定の改行文字に置き換えた上で保存するような場合は次のようにすることができます。
+

          
+
+まず、File.ReadAllLinesメソッドを使って行に分割した状態で読み込む (このときファイル内に混在する``CRLF``・``CR``・``LF``はすべて改行として扱われた上で除去される)
+
+次に、[[String.Joinメソッド>programming/netfx/string/1_operations#String.Join]]を使って行の配列を目的の改行文字で結合した文字列にする
+
+作成した文字列をファイルに保存する
+

          
+
これにより、ファイル内の改行文字を統一することができます。
+

          
+
#tabpage(codelang=cs,container-title=ファイル内の混在する改行文字をCRLFに統一する)
+
#code{{
+
using System;
+
using System.IO;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // 行に分割した状態でファイル内容をすべて読み込む
+
    // (sample.txtは改行文字が混在した内容を想定)
+
    var lines = File.ReadAllLines("sample.txt");
+

          
+
    // 改行文字にCRLFを使用して行を1つの文字列に結合する
+
    var text = string.Join("\r\n", lines);
+

          
+
    // 改行文字を統一した文字列をファイルに書き込む
+
    File.WriteAllText("sample.txt", text);
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' 行に分割した状態でファイル内容をすべて読み込む
+
    ' (sample.txtは改行文字が混在した内容を想定)
+
    Dim lines() As String = File.ReadAllLines("sample.txt")
+

          
+
    ' 改行文字にCRLFを使用して行を1つの文字列に結合する
+
    Dim text As String = String.Join(ControlChars.CrLf, lines)
+

          
+
    ' 改行文字を統一した文字列をファイルに書き込む
+
    File.WriteAllText("sample.txt", text)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+

          
+

          
+

          
+
*文字コード [#charset]
+
**Encodingの取得 [#Encoding.GetEncoding]
+
Fileクラスのメソッドを使ってファイルの読み書きを行う際、文字コードの指定に&msdn(netfx,type,System.Text.Encoding){System.Text.Encodingクラス};を使います。 特定の文字コードに対応するEncodingを取得するには次のようにします。
+

          
+
|*文字コードと対応するEncoding
+
|~文字コード|~BOM|~対応するEncodingを取得するコード|h
+
|>|~文字コード|~対応するEncodingを取得するコード|f
+
|UTF-8|あり|``Encoding.UTF8``|
+
|~|なし|``new UTF8Encoding(false)``|
+
|UTF-16 Little Endian|あり|``Encoding.Unicode``|
+
|~|なし|``new UnicodeEncoding(false, false)``|
+
|UTF-16 Big Endian|あり|``Encoding.BigEndianUnicode``|
+
|~|なし|``new UnicodeEncoding(true, false)``|
+
|UTF-32 Little Endian|あり|``Encoding.UTF32``|
+
|~|なし|``new UTF32Encoding(false, false)``|
+
|UTF-32 Big Endian|あり|``new UTF32Encoding(true, true)``|
+
|~|なし|``new UTF32Encoding(true, false)``|
+
|>|ASCII (7bit)|``Encoding.ASCII``|
+
|>|Shift_JIS|``Encoding.GetEncoding("Shift_JIS")``&br;``Encoding.GetEncoding(932)``|
+
|>|EUC-JP|``Encoding.GetEncoding("EUC-JP")``&br;``Encoding.GetEncoding(20932)``|
+
|>|ISO-2022-JP|``Encoding.GetEncoding("ISO-2022-JP")``&br;``Encoding.GetEncoding(50220)``|
+

          
+
#remarks
+
このほかの文字コードに関しては&msdn(netfx,type,System.Text.Encoding){Encodingクラスのドキュメント};を参照してください。
+
#remarks-end
+

          
+
実際のコードでは次のように文字コードを指定します。
+

          
+
#tabpage(codelang=cs,container-title=文字コードを指定してテキストファイルを書き込む)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    var text = "text日本語テキスト";
+

          
+
    // BOMありのUTF-8で書き込む
+
    File.WriteAllText("sample-utf8bom.txt", text, Encoding.UTF8);
+

          
+
    // BOMなしのUTF-8で書き込む
+
    File.WriteAllText("sample-utf8.txt", text, new UTF8Encoding(false));
+

          
+
    // Shift_JISで書き込む
+
    File.WriteAllText("sample-shiftjis.txt", text, Encoding.GetEncoding("Shift_JIS"));
+

          
+
    // Shift_JISで書き込む (上記のコードと同じ)
+
    File.WriteAllText("sample-shiftjis.txt", text, Encoding.GetEncoding(932));
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim text As String = "text日本語テキスト"
+

          
+
    ' BOMありのUTF-8で書き込む
+
    File.WriteAllText("sample-utf8bom.txt", text, Encoding.UTF8)
+

          
+
    ' BOMなしのUTF-8で書き込む
+
    File.WriteAllText("sample-utf8.txt", text, New UTF8Encoding(False))
+

          
+
    ' Shift_JISで書き込む
+
    File.WriteAllText("sample-shiftjis.txt", text, Encoding.GetEncoding("Shift_JIS"))
+

          
+
    ' Shift_JISで書き込む (上記のコードと同じ)
+
    File.WriteAllText("sample-shiftjis.txt", text, Encoding.GetEncoding(932))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
UTFエンコーディングを用いる場合、書き込みに際してBOM(Byte Order Mark)を出力するかどうかは、書き込みメソッドに指定するEncodingによって変えることができます。 一方、読み込みの場合は、BOMの有無に関わらず自動的にBOMが除去された上で読み込まれます。
+

          
+
#remarks
+
EncodingクラスとBOMに関してより詳しくは[[programming/netfx/tips/unicode_encoding_bom]]で解説しています。
+
#remarks-end
+

          
+
#remarks
+
BOMを除去せずに読み込みたい場合は、[[File.ReadAllBytesメソッド>#File.ReadAllBytes]]によっていったんバイナリとして読み、その後テキストとして処理する必要があります。
+
#remarks-end
+

          
+
**文字コードの自動判別
+
Fileクラスの読み込みメソッドでは、文字コードの自動判別は行えません。 必ず文字コードを指定した上で読み込む必要があります。 ファイルの内容と異なる文字コードを指定した場合は文字化けが起こります。 なお、ファイルの先頭にBOMが付与されている場合は、UTF-8およびUTF-32のみ自動的に検出されるとされています。
+

          
+
文字コードを自動判別して読み込むには[[programming/netfx/tips/determine_shiftjis_eucjp]]で掲載しているような判別コードを自前で用意するか、あるいはサードパーティー製のライブラリ等を用いる必要があります。
+

          
+

          
+
**言語設定に対応する文字コード
+
プラットフォームのデフォルトの文字コードを取得したい場合は&msdn(netfx,member,System.Text.Encoding.Default){Encoding.Defaultプロパティ};を使用します。 また、現在の言語設定に対応する文字コード(ANSIコード)を取得したい場合は、Encoding.GetEncodingメソッドの引数に&msdn(netfx,member,System.Globalization.TextInfo.ANSICodePage){CultureInfo.TextInfo.ANSICodePageプロパティ};の値を指定します。
+

          
+
詳しくは[[programming/netfx/environment/1_process#LocaleAndCulture_DefaultEncoding]]および[[programming/netfx/environment/1_process#LocaleAndCulture_CultureEncoding]]を参照してください。
+

          
+

          
+
*ファイルのパス [#filepath]
+
Fileクラスのメソッドでは、ファイル名にカレントディレクトリからの相対パス、あるいは絶対パスを指定することができます。 ディレクトリとファイル名を別けた状態で指定することはできないので、その場合は[[Path.Combineメソッドでパスを結合>programming/netfx/filesystem/0_path#Path.Combine]]します。
+

          
+
また、ワイルドカードを指定して複数のファイルを同時に読み書きすることもできません。 Fileクラスのメソッドではファイルをひとつずつ扱う必要があります。 ワイルドカードを使ってファイルを検索するには、[[Directory.EnumerateFilesメソッドでファイルを検索>programming/netfx/filesystem/1_filesystem#Directory.GetFileSystemEntries]]します。
+

          
+
#tabpage(codelang=cs,container-title=Fileクラスのメソッドとファイルパスの指定方法)
+
#code{{
+
using System;
+
using System.IO;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    string text;
+

          
+
    // カレントディレクトリにあるsample.txtの内容を読み込む (相対パスでの指定)
+
    text = File.ReadAllText("sample.txt");
+

          
+
    // E:\sample.txtの内容を読み込む (絶対パスでの指定)
+
    text = File.ReadAllText(@"E:\sample.txt");
+

          
+
    // ディレクトリE:\text\にあるsample.txtの内容を読み込む
+
    // (Path.Combineでディレクトリパスとファイルパスを結合する)
+
    string directory = @"E:\text\";
+

          
+
    text = File.ReadAllText(Path.Combine(directory, "sample.txt"));
+

          
+
    // ディレクトリE:\text\、ワイルドカードsample-*.txtにマッチするファイルをひとつずつ読み込む
+
    foreach (var file in Directory.EnumerateFiles(@"E:\text\", "sample-*.txt")) {
+
      text = File.ReadAllText(file);
+
    }
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim text As String
+

          
+
    ' カレントディレクトリにあるsample.txtの内容を読み込む (相対パスでの指定)
+
    text = File.ReadAllText("sample.txt")
+

          
+
    ' E:\sample.txtの内容を読み込む (絶対パスでの指定)
+
    text = File.ReadAllText("E:\sample.txt")
+

          
+
    ' ディレクトリE:\text\にあるsample.txtの内容を読み込む
+
    ' (Path.Combineでディレクトリパスとファイルパスを結合する)
+
    Dim dir As String = "E:\text\"
+

          
+
    text = File.ReadAllText(Path.Combine(dir, "sample.txt"))
+

          
+
    ' ディレクトリE:\text\、ワイルドカードsample-*.txtにマッチするファイルをひとつずつ読み込む
+
    For Each f As String In Directory.EnumerateFiles("E:\text\", "sample-*.txt")
+
      text = File.ReadAllText(f)
+
    Next
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#remarks
+
ワイルドカードを指定したファイルの検索については[[programming/netfx/filesystem/1_filesystem#Directory.GetFileSystemEntries]]を参照してください。
+
#remarks-end
+

          
+
#remarks
+
&msdn(netfx,member,System.IO.Path.Combine){Path.Combineメソッド};によるパスの結合など、ファイルパスに関する操作については[[programming/netfx/filesystem/0_path]]を参照してください。
+
#remarks-end
+

          
+
#remarks
+
カレントディレクトリを取得・参照する方法は[[programming/netfx/environment/1_process#ProcessAndAssembly_CurrentDirectory]]、現在実行している実行可能ファイルのあるディレクトリを取得する方法は[[programming/netfx/environment/1_process#ProcessAndAssembly_ProcessFilePath]]を参照してください。
+
#remarks-end
+

          
+
#remarks
+
C#ではパス文字列の記述に逐語的文字列リテラルを用いることができます。 詳しくは[[programming/netfx/basic_types/1_literal_suffix#VerbatimStringLiterals]]を参照してください。
+
#remarks-end
+

          
+
*CSVを読み込む [#read_csv]
+
ここではFileクラスを使ったファイルの読み込み、および読み込んだ内容を型変換する具体例として、CSVファイルを読み込み、読み込んだデータをインスタンスに復元する例を紹介します。 この例では、以下のようにカンマを区切り文字とするCSVファイルを読み込みます。
+

          
+
#code(csv,type=input,license=,入力ファイル(sample.csv)){{
+
Alice,0,2016-01-01T00:00:00
+
Bob,1,2016-02-29T12:34:56
+
Charlie,2,2016-03-01T15:00:00
+
}}
+

          
+
#tabpage(codelang=cs,container-title=File.ReadAllLinesメソッドを使ってCSVファイルを読み込む)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
// CSVファイルから読み込むデータ構造を表すクラス
+
class Account {
+
  public string Name;
+
  public int ID;
+
  public DateTime LastLogin;
+

          
+
  public override string ToString()
+
  {
+
    return string.Format("Name = {0}, ID = {1}, LastLogin = {2:r}",
+
                         Name, ID, LastLogin);
+
  }
+
}
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // sample.csvを1行ずつ読み込む
+
    foreach (var line in File.ReadLines("sample.csv")) {
+
      // 行をカンマで分割する
+
      var columns = line.Split(',');
+

          
+
      // 読み込んだデータを設定するインスタンス
+
      var a = new Account();
+

          
+
      // 1カラム目は変換せず代入する
+
      a.Name = columns[0];
+

          
+
      // 2カラム目は数値に変換する
+
      a.ID = int.Parse(columns[1]);
+

          
+
      // 3カラム目は厳密に定義された書式"s"でDateTimeに変換する
+
      a.LastLogin = DateTime.ParseExact(columns[2], "s", null);
+

          
+
      // 読み込んだデータを表示する
+
      Console.WriteLine(a);
+
    }
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
' CSVファイルから読み込むデータ構造を表すクラス
+
Class Account
+
  Public Name As String
+
  Public ID As Integer
+
  Public LastLogin As DateTime
+

          
+
  Public Overrides Function ToString() As String
+
    Return String.Format("Name = {0}, ID = {1}, LastLogin = {2:r}", _
+
                         Name, ID, LastLogin)
+
  End Function
+
End Class
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' sample.csvを1行ずつ読み込む
+
    For Each line As String In File.ReadLines("sample.csv")
+
      ' 行をカンマで分割する
+
      Dim columns() As String = line.Split(","c)
+

          
+
      ' 読み込んだデータを設定するインスタンス
+
      Dim a As New Account()
+

          
+
      ' 1カラム目は変換せず代入する
+
      a.Name = columns(0)
+

          
+
      ' 2カラム目は数値に変換する
+
      a.ID = Integer.Parse(columns(1))
+

          
+
      ' 3カラム目は厳密に定義された書式"s"でDateTimeに変換する
+
      a.LastLogin = DateTime.ParseExact(columns(2), "s", Nothing)
+

          
+
      ' 読み込んだデータを表示する
+
      Console.WriteLine(a)
+
    Next
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#prompt(実行結果){{
+
Name = Alice, ID = 0, LastLogin = Fri, 01 Jan 2016 00:00:00 GMT
+
Name = Bob, ID = 1, LastLogin = Mon, 29 Feb 2016 12:34:56 GMT
+
Name = Charlie, ID = 2, LastLogin = Tue, 01 Mar 2016 15:00:00 GMT
+
}}
+

          
+
#remarks
+
このサンプルで使用している書式"``s``"およびDateTime.ParseExactメソッドについては[[programming/netfx/datetime/2_formatting_parsing#DateTime_ToString_StandardFormatStrings]]および[[programming/netfx/string_formatting/0_formatstrings#StandardDateAndTimeFormatStrings]]を参照してください。
+
#remarks-end
+

          
+
このサンプルはごく基本的な機能しか実装していません。 このサンプルには以下のような不足があります。
+

          
+
:カラムの前後に空白があった場合、それもそのまま読み込まれる|前後の空白を除去する場合は&msdn(netfx,member,System.String.Trim){String.Trim};などのメソッドを使うことができます。 ([[programming/netfx/string/1_operations#String.Trim]])
+
:行または個々のカラムのデータや書式が不正だった場合に例外となる|&msdn(netfx,member,System.Int32.Parse){int.Parse};などのメソッドは、文字列が不正な書式の場合に例外&msdn(netfx,type,System.FormatException){FormatException};をスローします。 文字列が値として妥当かチェックした上で、不正だった場合にデフォルト値など代替となる値を設定したいような場合には&msdn(netfx,member,System.Int32.TryParse){int.TryParse};などのメソッドを使うことができます。 ([[programming/netfx/conversion/0_basetype#StringConversion_ParseTryParse]])
+
:コメント行などを記述できない|行頭が``#``の場合はコメント行として扱うなどの処理を記述する場合は、&msdn(netfx,member,System.String.StartsWith){String.StartsWith};などのメソッドを使うことによってそれらの行を無視するようにすることができます。 ([[programming/netfx/string/2_1_comparison#String.Contains]])
+
:``"``や``'``でクオートされているカラムを適切に処理できない|&msdn(netfx,member,System.String.Split){String.Splitメソッド};ではクオートされているかを考慮せずに分割を行うため、クオートされたカラムを含むCSVを適切に扱えません。 より厳密に分割処理を行うように記述するか、独自に処理を実装する代わりに[[programming/netfx/fcl/Microsoft.VisualBasic.FileIO.TextFieldParser]]などのクラスを使います。
+

          
+
#remarks
+
クラスや構造体のインスタンスをファイルに保存したり、逆にファイルから復元するには[[シリアライズ>programming/netfx/serialization/0_abstract]]を用いることもできます。 詳しくは[[programming/netfx/serialization/0_abstract]]を参照してください。
+
#remarks-end
+

          
+

          
+
*FileクラスのメソッドとStreamReader/Writer・BinaryReader/Writerの対比
+
一般に、何らかのデータ構造やフォーマットを持っているファイルの読み書きでは、[[StreamReader/StreamWriter>programming/netfx/stream/2_streamreader_streamwriter]]あるいは[[BinaryReader/BinaryWriter>programming/netfx/stream/3_binaryreader_binarywriter]]の方が向いています。 特に、ファイルから数値など特定のデータ型の値を読み込む・書き込むような場合には、FileクラスのメソッドよりもStreamReader/StreamWriter・BinaryReader/BinaryWriterの方が適しています。 一方、ファイルにそういった構造やフォーマットがない場合、あるいは無視して単なるデータ列として読み込み・書き込みを行う場合は、Fileクラスのメソッドが便利です。
+

          
+
以下では、FileクラスのメソッドとStreamReader/StreamWriterおよびBinaryReader/BinaryWriterを使った場合を比較を例示します。 ファイルを扱う際に、どちらが目的にあっているか検討する際の参考としてご覧ください。
+

          
+
#relevantdocs(StreamReader/StreamWriter・BinaryReader/BinaryWriterについて)
+

          
+
-[[programming/netfx/stream/2_streamreader_streamwriter]]
+
-[[programming/netfx/stream/3_binaryreader_binarywriter]]
+
-[[programming/netfx/stream/0_abstract]]
+

          
+
#relevantdocs-end
+

          
+
**テキストファイルから1行ずつ読み込む
+
#column
+

          
+
#tabpage(codelang=cs,container-title=File.ReadLinesを使って1行ずつ読み込み、行番号を付けて表示する)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    int lineCount = 0;
+

          
+
    foreach (var line in File.ReadLines("sample.txt", Encoding.UTF8)) {
+
      lineCount++;
+

          
+
      // 行番号を付けて行の内容を表示する
+
      Console.WriteLine("{0:D3}: {1}", lineCount, line);
+
    }
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim lineCount As Integer = 0
+

          
+
    For Each line As String In File.ReadLines("sample.txt", Encoding.UTF8)
+
      lineCount += 1
+

          
+
      ' 行番号を付けて行の内容を表示する
+
      Console.WriteLine("{0:D3}: {1}", lineCount, line)
+
    Next
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#column
+

          
+
#tabpage(codelang=cs,container-title=StreamReaderを使って1行ずつ読み込み、行番号を付けて表示する)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    using (var reader = new StreamReader("sample.txt", Encoding.UTF8)) {
+
      int lineCount = 0;
+
      string line = null;
+

          
+
      for (;;) {
+
        line = reader.ReadLine(); // 1行読み込む
+

          
+
        if (line == null)
+
          break; // ファイルの終端まで読み込んだ
+

          
+
        lineCount++;
+

          
+
        // 行番号を付けて行の内容を表示する
+
        Console.WriteLine("{0:D3}: {1}", lineCount, line);
+
      }
+
    }
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Using reader As New StreamReader("sample.txt", Encoding.UTF8)
+
      Dim lineCount As Integer = 0
+
      Dim line As String = Nothing
+

          
+
      Do
+
        line = reader.ReadLine() ' 1行読み込む
+

          
+
        If line Is Nothing Then Exit Do ' ファイルの終端まで読み込んだ
+

          
+
        lineCount += 1
+

          
+
        ' 行番号を付けて行の内容を表示する
+
        Console.WriteLine("{0:D3}: {1}", lineCount, line)
+
      Loop
+
    End Using
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#column-end
+

          
+
#code(,type=input,license=,sample.txtの内容){{
+
かごめかごめ
+
かごのなかのとりは
+
いついつでやる
+
}}
+

          
+
#prompt(実行結果){{
+
001: かごめかごめ
+
002: かごのなかのとりは
+
003: いついつでやる
+
}}
+

          
+
#remarks
+
この例で使用している書式指定子``D3``は、数値を三桁の10進数として出力するものです。 この書式指定子については[[programming/netfx/string_formatting/0_formatstrings#StandardNumericFormatStrings_Decimal]]を参照してください。
+
#remarks-end
+

          
+
**テキストファイルに1行ずつ書き込む
+
#column
+

          
+
#tabpage(codelang=cs,container-title=File.WriteAllTextメソッドを使って行ごとに改行された内容を書き込む)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    string text; // ファイルに書き込む内容
+

          
+
    // 1行目
+
    text = "かごめかごめ" + Environment.NewLine;
+

          
+
    // 2行目
+
    text += "かごのなかのとりは" + Environment.NewLine;
+

          
+
    // 3行目
+
    text += "いついつでやる" + Environment.NewLine;
+

          
+
    File.WriteAllText("sample.txt", text, Encoding.UTF8);
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim text As String ' ファイルに書き込む内容
+

          
+
    ' 1行目
+
    text = "かごめかごめ" + Environment.NewLine
+

          
+
    ' 2行目
+
    text += "かごのなかのとりは" + Environment.NewLine
+

          
+
    ' 3行目
+
    text += "いついつでやる" + Environment.NewLine
+

          
+
    File.WriteAllText("sample.txt", text, Encoding.UTF8)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#column
+

          
+
#tabpage(codelang=cs,container-title=StreamWriterを使って行ごとに改行された内容を書き込む)
+
#code{{
+
using System;
+
using System.IO;
+
using System.Text;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // sample.txtに書き込むStreamWriterを作成する
+
    // (false: 内容の追記ではなく上書きする)
+
    using (var writer = new StreamWriter("sample.txt", false, Encoding.UTF8)) {
+
      writer.WriteLine("かごめかごめ");        // 1行目
+
      writer.WriteLine("かごのなかのとりは");  // 2行目
+
      writer.WriteLine("いついつでやる");      // 3行目
+
    }
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+
Imports System.Text
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' sample.txtに書き込むStreamWriterを作成する
+
    ' (False: 内容の追記ではなく上書きする)
+
    Using writer As New StreamWriter("sample.txt", False, Encoding.UTF8)
+
      writer.WriteLine("かごめかごめ");        ' 1行目
+
      writer.WriteLine("かごのなかのとりは");  ' 2行目
+
      writer.WriteLine("いついつでやる")       ' 3行目
+
    End Using
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#column-end
+

          
+
#code(,type=output,sample.txtに書き込まれる内容){{
+
かごめかごめ
+
かごのなかのとりは
+
いついつでやる
+
}}
+

          
+
#remarks
+
この例で使用している``Environment.NewLine``は現在のプラットフォームにおける改行文字を取得するプロパティです。 詳しくは[[programming/netfx/environment/0_platform#SystemAndPlatform_NewLine]]を参照してください。
+
#remarks-end
+

          
+
#remarks
+
文字列を改行しながら連結していく場合、[[StringBuilderクラスとStringBuilder.AppendLineメソッド>programming/netfx/string/4_stringbuilder]]を使うこともできます。
+
#remarks-end
+

          
+
**バイナリファイルから数値を読み込む
+
#column
+

          
+
#tabpage(codelang=cs,container-title=File.ReadAllBytesを使ってバイナリファイルから数値を読み込む)
+
#code{{
+
using System;
+
using System.IO;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    var data = File.ReadAllBytes("sample.dat");
+

          
+
    // 読み込んだバイト配列から4バイト整数を3つ読み込んで表示する
+

          
+
    // バイト配列のインデックス0から4バイト分を32ビット整数に変換する
+
    Console.WriteLine(BitConverter.ToInt32(data, 0));
+

          
+
    // バイト配列のインデックス4から4バイト分を32ビット整数に変換する
+
    Console.WriteLine(BitConverter.ToInt32(data, 4));
+

          
+
    // バイト配列のインデックス8から4バイト分を32ビット整数に変換する
+
    Console.WriteLine(BitConverter.ToInt32(data, 8));
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim data() As Byte = File.ReadAllBytes("sample.dat")
+

          
+
    ' 読み込んだバイト配列から4バイト整数を3つ読み込んで表示する
+

          
+
    ' バイト配列のインデックス0から4バイト分を32ビット整数に変換する
+
    Console.WriteLine(BitConverter.ToInt32(data, 0))
+

          
+
    ' バイト配列のインデックス4から4バイト分を32ビット整数に変換する
+
    Console.WriteLine(BitConverter.ToInt32(data, 4))
+

          
+
    ' バイト配列のインデックス8から4バイト分を32ビット整数に変換する
+
    Console.WriteLine(BitConverter.ToInt32(data, 8))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#column
+

          
+
#tabpage(codelang=cs,container-title=BinaryReaderを使ってバイナリファイルから数値を読み込む)
+
#code{{
+
using System;
+
using System.IO;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // ファイルsample.datを開いて、そのファイルから読み込むFileStreamを開く
+
    using (var stream = File.OpenRead("sample.dat")) {
+
      // FileStreamから読み込むBinaryReaderを作成
+
      using (var reader = new BinaryReader(stream)) {
+
        // 4バイト(32ビット)整数を読み込んで表示する
+
        Console.WriteLine(reader.ReadInt32());
+
        Console.WriteLine(reader.ReadInt32());
+
        Console.WriteLine(reader.ReadInt32());
+
      }
+
    }
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' ファイルsample.datを開いて、そのファイルから読み込むFileStreamを開く
+
    Using stream As FileStream = File.OpenRead("sample.dat")
+
      ' FileStreamから読み込むBinaryReaderを作成
+
      Using reader As New BinaryReader(stream)
+
        ' 4バイト(32ビット)整数を読み込んで表示する
+
        Console.WriteLine(reader.ReadInt32())
+
        Console.WriteLine(reader.ReadInt32())
+
        Console.WriteLine(reader.ReadInt32())
+
      End Using
+
    End Using
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#column-end
+

          
+
#prompt(入力ファイルsample.datの内容(バイナリダンプ)){{
+
0000000 10 00 00 00 03 00 00 00 5b d7 03 00
+
0000014
+
}}
+

          
+
#prompt(実行結果){{
+
16
+
3
+
251739
+
}}
+

          
+
#remarks
+
この例で使用しているBitConverterについては[[programming/netfx/conversion/0_basetype#ByteArrayConversion_BitConverter]]を参照してください。
+
#remarks-end
+

          
+
**バイナリファイルに数値を書き込む
+
#column
+

          
+
#tabpage(codelang=cs,container-title=File.WriteAllBytesメソッドを使ってバイナリファイルに数値を書き込む)
+
#code{{
+
using System;
+
using System.IO;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    var buffer = new byte[12]; // 書き込むデータを格納するバッファ(12バイト)
+

          
+
    // 4バイト整数値16をバイト配列に変換し、
+
    // バッファのインデックス0からの4バイト分にコピーする
+
    Array.Copy(BitConverter.GetBytes((int)16), 0, buffer, 0, 4);
+

          
+
    // 4バイト整数値3をバイト配列に変換し、
+
    // バッファのインデックス4からの4バイト分にコピーする
+
    Array.Copy(BitConverter.GetBytes((int)3), 0, buffer, 4, 4);
+

          
+
    // 4バイト整数値251739をバイト配列に変換し、
+
    // バッファのインデックス8からの4バイト分にコピーする
+
    Array.Copy(BitConverter.GetBytes((int)251739), 0, buffer, 8, 4);
+

          
+
    File.WriteAllBytes("sample.dat", buffer);
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim buffer(11) As Byte ' 書き込むデータを格納するバッファ(12バイト)
+

          
+
    ' 4バイト整数値16をバイト配列に変換し、
+
    ' バッファのインデックス0からの4バイト分にコピーする
+
    Array.Copy(BitConverter.GetBytes(CInt(16)), 0, buffer, 0, 4)
+

          
+
    ' 4バイト整数値3をバイト配列に変換し、
+
    ' バッファのインデックス4からの4バイト分にコピーする
+
    Array.Copy(BitConverter.GetBytes(CInt(3)), 0, buffer, 4, 4)
+

          
+
    ' 4バイト整数値251739をバイト配列に変換し、
+
    ' バッファのインデックス8からの4バイト分にコピーする
+
    Array.Copy(BitConverter.GetBytes(CInt(251739)), 0, buffer, 8, 4)
+

          
+
    File.WriteAllBytes("sample.dat", buffer)
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#column
+

          
+
#tabpage(codelang=cs,container-title=BinaryWriterを使ってバイナリファイルに数値を書き込む)
+
#code{{
+
using System;
+
using System.IO;
+

          
+
class Sample {
+
  static void Main()
+
  {
+
    // ファイルsample.datを上書きモードで作成して、そのファイルに書き込むFileStreamを開く
+
    using (var stream = File.Create("sample.dat")) {
+
      // FileStreamに書き込むBinaryWriterを作成
+
      using (var writer = new BinaryWriter(stream)) {
+
        writer.Write((int)16); // 4バイト整数を書き込む
+
        writer.Write((int)3);
+
        writer.Write((int)251739);
+
      }
+
    }
+
  }
+
}
+
}}
+
#tabpage(codelang=vb)
+
#code{{
+
Imports System
+
Imports System.IO
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' ファイルsample.datを上書きモードで作成して、そのファイルに書き込むFileStreamを開く
+
    Using stream As FileStream = File.Create("sample.dat")
+
      ' FileStreamに書き込むBinaryWriterを作成
+
      Using writer As New BinaryWriter(stream)
+
        writer.Write(CInt(16)) ' 4バイト整数を書き込む
+
        writer.Write(CInt(3))
+
        writer.Write(CInt(251739))
+
      End Using
+
    End Using
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#column-end
+

          
+
#prompt(sample.datに書き込まれる内容(バイナリダンプ)){{
+
0000000 10 00 00 00 03 00 00 00 5b d7 03 00
+
0000014
+
}}
+

          
+
#remarks
+
この例で使用しているBitConverterについては[[programming/netfx/conversion/0_basetype#ByteArrayConversion_BitConverter]]を参照してください。
+
#remarks-end
+

          
+

          
+
#navi(..)
+