C# Encoding/Byte/Stream/IO メモ

覚えてられない内容。少しずつまとめる。

Encoding

・メソッド
System.Text.Encoding.GetEncoding(“utf-8”)

・静的プロパティ
System.Text.Encoding.UTF8

・コンストラクタ
new System.Text.UTF8Encoding(false)
ASCIIとUnicodeは、Encodingクラスから派生した専用クラスがあり、falseにするとBOM無しにすることができる。

Byte

・String -> Byte[]
byte[] bytes = Encoding.UTF8.GetBytes(string);

・Byte[] -> String
string text = System.Text.Encoding.UTF8.GetString(bytes);

・Byte[] -> StreamReader -> String
var r = new System.IO.StreamReader(bytes, Encoding.UTF8);
r.ReadToEnd();

Stream/Reader/Writer

TextReader系

エンコード指定し、文字の入出力が基本。
TextReader系は、ReadToEndやReadLineが使える。
順次アクセスseekが使えない。

System.IO.StreamReader
System.IO.StreamWriter
System.IO.StringReader
System.IO.StringWriter

Stream系

バイトの入出力が基本。
基本seekできる。

System.IO.FileStream
System.IO.MemoryStream
System.IO.BufferedStream

TextReaderとStream

ファイルから文字を読むとき、FileStreamとStreamReaderがある。FileStreamはランダムアクセスでseekが使える。

Streamの型を受け付けるところではTextReaderは使えない。

・例(XmlSerializer -> MemoryStream -> Byte[] -> String)

ファイル/フォルダ

・フォルダ一覧
Directory.GetDirectories
Directory.EnumerateDirectories

・ファイル一覧
Directory.GetFiles
Directory.EnumerateFiles

・ファイル名
Path.GetFileName
Path.GetFileNameWithoutExtension

・ディレクトリ名
Path.GetDirectoryName

・ファイルの読み書き(Reader/Writerのラップ)
File.WriteAllLines
File.ReadAllLines
File.WriteAllText
File.ReadAllText

・存在確認
File.Exists
Directory.Exists