C Sharp サンプルコード
ナビゲーションに移動
検索に移動
目次
C# サンプルコード
C Sharp | 言語まとめ C Sharp |
- C# Document http://msdn.microsoft.com/ja-jp/library/kx37x362.aspx
- .Net Class Library Reference http://msdn.microsoft.com/ja-jp/library/ms229335.aspx
ファイル
ファイル名を抽出
- var filename = Path.GetFileName(file);
ファイルを書く
- using (var writer = new StreamWriter(Path.Combine(outPath, "Hoge.csv")))
- {
- writer.WriteLine("Something to write.");
- }
エンコーディングを指定してファイルを読む
- using System;
- using System.IO;
- namespace ConsoleApplication1
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"c:\work\test.csv";
- using (var reader = new StreamReader(path, System.Text.Encoding.GetEncoding("shift_jis")))
- {
- string line = null;
- while ((line = reader.ReadLine()) != null)
- {
- Console.WriteLine(line);
- }
- }
- }
- }
- }
- 以下のようなエラーが出る場合
- System.ArgumentException: ''Shift_JIS' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. '
- using System.Text;
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
CSVファイルを解析(TextFieldParser)
- http://msdn.microsoft.com/ja-jp/library/x710fk43.aspx
- 便利だが、どんな挙動をするのかよくわからない(どこにドキュメントがあるの?)
- 二重引用符で囲まれたフィールドでは、カンマはセパレータとしてではなく、値として判定してくれる(Excel仕様?)
- なぜVisualBasic名前空間にある?
- using System;
- using Microsoft.VisualBasic.FileIO;
- namespace ConsoleApplication1
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"c:\work\test.csv";
- using (TextFieldParser parser = new TextFieldParser(path,System.Text.Encoding.GetEncoding("shift_jis")))
- {
- parser.TextFieldType = FieldType.Delimited;
- parser.SetDelimiters(",");
- try
- {
- while (!parser.EndOfData)
- {
- string[] fields = parser.ReadFields();
- foreach (string field in fields)
- {
- Console.Write("[{0}]", field);
- }
- Console.WriteLine();
- }
- }
- catch (MalformedLineException e)
- {
- Console.WriteLine(e);
- System.Environment.Exit(1);
- }
- }
- }
- }
- }
UTF-8 エンコード BOMありなし
- UTF-8をGetEncodeすると、BOMが付く。new System.Text.UTF8Encoding(false) でBOMなし
- Encoding enc = null;
- if(String.Equals(toEnc,"utf-8", StringComparison.OrdinalIgnoreCase)) {
- // BOMなし
- enc = new System.Text.UTF8Encoding(false);
- }
- else
- {
- enc = Encoding.GetEncoding(toEnc);
- }
ファイルエンコード一括変換
- public class FileEncodingConverter
- {
- public FileEncodingConverter() {
- System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
- }
- /// <summary>
- /// 指定されたディレクトリのすべてのファイルのエンコードを変換して別のディレクトリに書き出す
- /// </summary>
- /// <param name="srcDir">変換元ディレクトリ</param>
- /// <param name="dstDir">変換先ディレクトリ</param>
- /// <param name="fromEnc">変換元エンコーディング</param>
- /// <param name="toEnc">変換後エンコーディング</param>
- public void convertDir(string srcDir, string dstDir, string fromEnc, string toEnc)
- {
- if (!Directory.Exists(dstDir))
- {
- Directory.CreateDirectory(dstDir);
- }
- var files = Directory.GetFiles(srcDir);
- foreach(var file in files)
- {
- var filename = Path.GetFileName(file);
- convert(file, Path.Combine(dstDir, filename), fromEnc, toEnc);
- }
- }
- /// <summary>
- /// 指定されたファイルのエンコードを変換して別ファイルに書き出す
- /// </summary>
- /// <param name="srcFile">変換元ファイル</param>
- /// <param name="dstFile">変換後ファイル</param>
- /// <param name="fromEnc">変換元エンコーディング</param>
- /// <param name="toEnc">変換後エンコーディング</param>
- public void convert(string srcFile, string dstFile, string fromEnc, string toEnc)
- {
- using(var writer = new StreamWriter(File.OpenWrite(dstFile),Encoding.GetEncoding(toEnc)))
- {
- foreach(var line in File.ReadLines(srcFile, System.Text.Encoding.GetEncoding(fromEnc)))
- {
- writer.WriteLine(line);
- }
- }
- }
- }
設定
C# 設定情報を保存する
LINQ
C# LINQ使用例
非同期処理
C# 非同期処理からUIスレッドにアクセスし画面を更新する
C# asyncとawaitの動作確認
WPF
© 2006 矢木浩人