「C Sharp サンプルコード」の版間の差分
ナビゲーションに移動
検索に移動
| (同じ利用者による、間の8版が非表示) | |||
| 1行目: | 1行目: | ||
| − | ==C# サンプルコード== | + | ==[[C# サンプルコード]]== |
| − | [[C | + | [[C Sharp]] | [[言語まとめ C Sharp]] | |
{{amazon|4873116503}} | {{amazon|4873116503}} | ||
| − | *C# Document http://msdn.microsoft.com/ja-jp/library/kx37x362.aspx | + | *[[C#]] Document http://msdn.microsoft.com/ja-jp/library/kx37x362.aspx |
| − | *.Net Class Library | + | *.Net Class Library [[R]]eference http://msdn.microsoft.com/ja-jp/library/ms229335.aspx |
===ファイル=== | ===ファイル=== | ||
====ファイル名を抽出==== | ====ファイル名を抽出==== | ||
| 15行目: | 15行目: | ||
} | } | ||
| − | ==== | + | ====[[エンコーディング]]を指定してファイルを読む==== |
| + | <pre> | ||
using System; | using System; | ||
using System.IO; | using System.IO; | ||
| 36行目: | 37行目: | ||
} | } | ||
} | } | ||
| + | </pre> | ||
| + | *以下のようなエラーが出る場合 | ||
| + | <pre> | ||
| + | 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. ' | ||
| + | </pre> | ||
| + | [[File:Cshart_shift_jis.png|600px]] | ||
| + | <pre> | ||
| + | using System.Text; | ||
| + | Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); | ||
| + | </pre> | ||
| + | |||
====CSVファイルを解析(TextFieldParser)==== | ====CSVファイルを解析(TextFieldParser)==== | ||
*http://msdn.microsoft.com/ja-jp/library/x710fk43.aspx | *http://msdn.microsoft.com/ja-jp/library/x710fk43.aspx | ||
*便利だが、どんな挙動をするのかよくわからない(どこにドキュメントがあるの?) | *便利だが、どんな挙動をするのかよくわからない(どこにドキュメントがあるの?) | ||
| − | **二重引用符で囲まれたフィールドでは、カンマはセパレータとしてではなく、値として判定してくれる( | + | **二重引用符で囲まれたフィールドでは、カンマはセパレータとしてではなく、値として判定してくれる([[Excel]]仕様?) |
**なぜVisualBasic名前空間にある? | **なぜVisualBasic名前空間にある? | ||
| 71行目: | 83行目: | ||
{ | { | ||
Console.WriteLine(e); | Console.WriteLine(e); | ||
| − | System. | + | System.En[[vi]]ronment.Exit(1); |
} | } | ||
} | } | ||
| 94行目: | 106行目: | ||
{ | { | ||
public FileEncodingConverter() { | public FileEncodingConverter() { | ||
| − | System.Text.Encoding. | + | System.Text.Encoding.RegisterPro[[vi]]der(System.Text.CodePagesEncodingPro[[vi]]der.Instance); |
} | } | ||
| 102行目: | 114行目: | ||
/// <param name="srcDir">変換元ディレクトリ</param> | /// <param name="srcDir">変換元ディレクトリ</param> | ||
/// <param name="dstDir">変換先ディレクトリ</param> | /// <param name="dstDir">変換先ディレクトリ</param> | ||
| − | /// <param name="fromEnc"> | + | /// <param name="fromEnc">変換元[[エンコーディング]]</param> |
| − | /// <param name="toEnc"> | + | /// <param name="toEnc">変換後[[エンコーディング]]</param> |
public void convertDir(string srcDir, string dstDir, string fromEnc, string toEnc) | public void convertDir(string srcDir, string dstDir, string fromEnc, string toEnc) | ||
{ | { | ||
| 124行目: | 136行目: | ||
/// <param name="srcFile">変換元ファイル</param> | /// <param name="srcFile">変換元ファイル</param> | ||
/// <param name="dstFile">変換後ファイル</param> | /// <param name="dstFile">変換後ファイル</param> | ||
| − | /// <param name="fromEnc"> | + | /// <param name="fromEnc">変換元[[エンコーディング]]</param> |
| − | /// <param name="toEnc"> | + | /// <param name="toEnc">変換後[[エンコーディング]]</param> |
public void convert(string srcFile, string dstFile, string fromEnc, string toEnc) | public void convert(string srcFile, string dstFile, string fromEnc, string toEnc) | ||
{ | { | ||
using(var writer = new StreamWriter(File.OpenWrite(dstFile),Encoding.GetEncoding(toEnc))) | using(var writer = new StreamWriter(File.OpenWrite(dstFile),Encoding.GetEncoding(toEnc))) | ||
{ | { | ||
| − | foreach(var line in File. | + | foreach(var line in File.[[R]]eadLines(srcFile, System.Text.Encoding.GetEncoding(fromEnc))) |
{ | { | ||
writer.WriteLine(line); | writer.WriteLine(line); | ||
| 139行目: | 151行目: | ||
===設定=== | ===設定=== | ||
| − | ====C# 設定情報を保存する==== | + | ====[[C# 設定情報を保存する]]==== |
| − | *C# 設定情報を保存する | + | *[[C# 設定情報を保存する]] |
===LINQ=== | ===LINQ=== | ||
| − | ====C# LINQ使用例==== | + | ====[[C# LINQ使用例]]==== |
| − | *C# LINQ使用例 | + | *[[C# LINQ使用例]] |
===非同期処理=== | ===非同期処理=== | ||
| − | ====C# 非同期処理からUIスレッドにアクセスし画面を更新する==== | + | ====[[C Sharp 非同期処理からUIスレッドにアクセスし画面を更新する|C# 非同期処理からUIスレッドにアクセスし画面を更新する]]==== |
| − | *C# 非同期処理からUIスレッドにアクセスし画面を更新する | + | *[[C Sharp 非同期処理からUIスレッドにアクセスし画面を更新する|C# 非同期処理からUIスレッドにアクセスし画面を更新する]] |
| − | ====C# asyncとawaitの動作確認==== | + | |
| − | *C# asyncとawaitの動作確認 | + | ====[[C# asyncとawaitの動作確認]]==== |
| − | ===WPF=== | + | *[[C# asyncとawaitの動作確認]] |
| + | |||
| + | ===[[WPF]]=== | ||
*http://typea.info/blg/glob/wpf/ | *http://typea.info/blg/glob/wpf/ | ||
2021年11月29日 (月) 10:34時点における最新版
目次
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 矢木浩人