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

System.IO.Directory.GetDirectories(
@”C:\test”, “*”, System.IO.SearchOption.AllDirectories);

※SearchOptionでサブフォルダを対象とするかどうか。

・ファイル一覧
Directory.GetFiles

・ファイル名
GetFileName
GetFileNameWithoutExtension

・ディレクトリ名
Path.GetDirectoryName
※パス末尾のファイル名がなくなる。

・存在確認
File.Exists
Directory.Exists