SlideShare a Scribd company logo
1 of 23
C#によるファイルの読み書き
~StreamReaderとStreamWriter~
Microsoft MVP Hiroki.T
http://blog.hiros-dot.net/
copyright @2015 HIRO's.NET All Rights Reserved.
C#でファイルを読み書きするには?
 ファイル読み込みは StreamReaderクラスを使用する
 ファイル書き込みは StreamWriterクラスを使用する
StreamWriterによる書き込み
StreamWriterの構文
 オーバーロードは7つある。代表的なものは以下の通り
 StreamWriter(string path)
 StreamWriter(string path, bool append)
 StreamWriter(string path, bool append, Encoding encoding)
 path:データ書き込み先のファイルパス
 append: ファイルに追加書き込みする場合はtrue
 encoding: 使用する文字エンコーディング
StreamWriterの基本使用例
string path = @"C:Worktest.txt";
Encoding enc = Encoding.GetEncoding("Shift_Jis");
using (StreamWriter sw = new StreamWriter(path, true, enc))
{
sw.Write("Writeメソッドは改行しません");
sw.WriteLine("WriteLineメソッドは改行します");
}
StreamReaderによる読み込み
StreamReaderの構文
 オーバーロードは11ある。代表的なものは以下の通り
 StreamReader(string path)
 StreamReader(string path, Encoding encoding)
 path:データ読み込み元のファイルパス
 encoding: 使用する文字エンコーディング
StreamReaderの基本使用例
*ファイル内容を1行ずつ読み込む
string path = @"C:Worktest.txt";
Encoding enc = Encoding.GetEncoding("Shift_Jis");
List<string> listLine = new List<string>();
string strLine = string.Empty;
using (StreamReader sr = new StreamReader(path, enc))
{
// 1行読み込みをし、読み込んだデータがnull以外ならループ
while ((strLine = sr.ReadLine()) != null)
{
// リストに行の内容を追加
listLine.Add(strLine);
}
}
簡易テキストエディタを作成
する
プロジェクトの作成と画面デザイン
コントロール:TextBox
Name: txtMemo
MultiLine: true
コントロール:Button
Name: btnRead
コントロール:Button
Name: btnWrite
コントロール:SaveFileDialog
Name: dlgSaveコントロール:OpenFileDialog
Name: dlgOpen
[読み込みボタン]クリック時の処理
using System.IO;
Encoding ENC_SHIFT_JIS = Encoding.GetEncoding("Shift_Jis");
private void btnRead_Click(object sender, EventArgs e)
{
// 「ファイルを開く」ダイアログでOK以外が押された場合は処理を抜ける
if (dlgOpen.ShowDialog() != DialogResult.OK) return;
try
{
using (StreamReader sr = new StreamReader(dlgOpen.FileName, ENC_SHIFT_JIS))
{
txtMemo.Text = sr.ReadToEnd();
}
}
次ページへ続く
前ページからの続き
catch (IOException ioex)
{
MessageBox.Show(ioex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
[名前を付けて保存]ボタンクリック時の処理
private void btnSave_Click(object sender, EventArgs e)
{
// 「名前を付けて保存」ダイアログでOK以外が押された場合は処理を抜ける
if (dlgSave.ShowDialog() != DialogResult.OK) return;
try
{
using (StreamWriter sw = new StreamWriter(dlgSave.FileName, false, ENC_SHIFT_JIS))
{
sw.Write(txtMemo.Text);
}
}
catch (IOException ioex)
{
MessageBox.Show(ioex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
ステータスバーを付けて
読み込んだファイル名を表示する
フォームにStatusStripを貼り付ける
コントロール:StatusStrip
Name: stsStatus
コントロール:StatusLabel
Name: lblFilename
Text: (空欄にする)
①StatusStripを貼り付ける
②StatusLabelを追加する
読み込んだファイル名を表示する
private void btnRead_Click(object sender, EventArgs e)
{
// 「ファイルを開く」ダイアログでOK以外が押された場合は処理を抜ける
if (dlgOpen.ShowDialog() != DialogResult.OK) return;
lblFilename.Text = dlgOpen.FileName; // ←この1行を追加
メニューを付ける
フォームにメニューを付ける
①MenuStripを貼り付ける
②メニューを追加する
Name: menuFile
Text: ファイル (&F)
Name: menuFileOpen
Text: 開く(&O)
Name: menuFileSeparator
Text: -
Name: menuFileSave
Text: 名前を付けて保存(&A)
Name: menuFileEnd
Text: 終了(&X)
「開く(O)」イベントの作成
 「開く(o)」が押された場合の処理は、[読み込み]ボタンと同じ。
 よって「開く(O)」イベントに[読み込み]のイベントを紐づける
①選択
②選択
「名前を付けて保存(S)」イベントの作成
 「名前を付けて保存(S)」が押された場合の処理は、[書き込み]ボ
タンと同じ。
 よって「名前を付けて保存(S)」イベントに[書き込み]のイベントを
紐づける
①選択
②選択
[終了(X)]イベントの作成
 [終了(X)]メニューのイベントを作成する
①選択
②ダブルクリックでイベント
が作成される
「終了(X)」イベントのコード
private void menuFileEnd_Click(object sender, EventArgs e)
{
this.Close();
}
End

More Related Content

Viewers also liked

ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたNarami Kiyokura
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版信之 岩永
 
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~Fujio Kojima
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべてMasaru Gushiken
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶdcubeio
 
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術Noriaki Kadota
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門増田 亨
 

Viewers also liked (9)

ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
 
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
 
Deep Dive C# 6.0
Deep Dive C# 6.0Deep Dive C# 6.0
Deep Dive C# 6.0
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
 
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 

Similar to C#によるファイルの読み書き

Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Kazumi IWANAGA
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...Akira Inoue
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011Hiroh Satoh
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905Nobuaki Oshiro
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010Nobuaki Oshiro
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
Mosesdecoderコード解読の勘所
Mosesdecoderコード解読の勘所Mosesdecoderコード解読の勘所
Mosesdecoderコード解読の勘所Jun-ya Norimatsu
 
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版Go Yamada
 
Data APIの背景と活用方法
Data APIの背景と活用方法Data APIの背景と活用方法
Data APIの背景と活用方法Hajime Fujimoto
 
File API: Writer & Directories and System
File API: Writer & Directories and SystemFile API: Writer & Directories and System
File API: Writer & Directories and SystemTaku AMANO
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段Pierre3 小林
 
Mvc conf session_2_shibamura
Mvc conf session_2_shibamuraMvc conf session_2_shibamura
Mvc conf session_2_shibamuraHiroshi Okunushi
 
Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊Toru Makabe
 
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Takuya Matsunaga
 
フォントのファイルフォーマット
フォントのファイルフォーマットフォントのファイルフォーマット
フォントのファイルフォーマットGifig Mania
 
[POST.Dev Japan] VS Code で試みる開発体験の向上
[POST.Dev Japan] VS Code で試みる開発体験の向上[POST.Dev Japan] VS Code で試みる開発体験の向上
[POST.Dev Japan] VS Code で試みる開発体験の向上Tomomi Imura
 

Similar to C#によるファイルの読み書き (20)

Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
20140409勉強会
20140409勉強会20140409勉強会
20140409勉強会
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
 
20010901
2001090120010901
20010901
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
Html講義
Html講義Html講義
Html講義
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
Mosesdecoderコード解読の勘所
Mosesdecoderコード解読の勘所Mosesdecoderコード解読の勘所
Mosesdecoderコード解読の勘所
 
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
BPstudy#64 ドキュメントを作りたくなってしまう魔法のツール Sphinx 2012年版
 
Data APIの背景と活用方法
Data APIの背景と活用方法Data APIの背景と活用方法
Data APIの背景と活用方法
 
File API: Writer & Directories and System
File API: Writer & Directories and SystemFile API: Writer & Directories and System
File API: Writer & Directories and System
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段
 
Mvc conf session_2_shibamura
Mvc conf session_2_shibamuraMvc conf session_2_shibamura
Mvc conf session_2_shibamura
 
Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊Azure Infrastructure as Code 体験入隊
Azure Infrastructure as Code 体験入隊
 
G0042 h
G0042 hG0042 h
G0042 h
 
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
 
フォントのファイルフォーマット
フォントのファイルフォーマットフォントのファイルフォーマット
フォントのファイルフォーマット
 
[POST.Dev Japan] VS Code で試みる開発体験の向上
[POST.Dev Japan] VS Code で試みる開発体験の向上[POST.Dev Japan] VS Code で試みる開発体験の向上
[POST.Dev Japan] VS Code で試みる開発体験の向上
 

More from Hiroki Takahashi

C# Database操作6 SqlDataAdapterを使用したデータの更新-
C# Database操作6  SqlDataAdapterを使用したデータの更新-C# Database操作6  SqlDataAdapterを使用したデータの更新-
C# Database操作6 SqlDataAdapterを使用したデータの更新-Hiroki Takahashi
 
C# Database操作5 SqlDataAdapterを使用したデータの取得-
C# Database操作5  SqlDataAdapterを使用したデータの取得-C# Database操作5  SqlDataAdapterを使用したデータの取得-
C# Database操作5 SqlDataAdapterを使用したデータの取得-Hiroki Takahashi
 
C# Database操作4 トランザクション処理-
C# Database操作4  トランザクション処理-C# Database操作4  トランザクション処理-
C# Database操作4 トランザクション処理-Hiroki Takahashi
 
C# Database操作3 データの更新-
C# Database操作3  データの更新-C# Database操作3  データの更新-
C# Database操作3 データの更新-Hiroki Takahashi
 
C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装Hiroki Takahashi
 
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行するC# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行するHiroki Takahashi
 
C# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベントC# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベントHiroki Takahashi
 
C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成Hiroki Takahashi
 
C# モーダルフォームとモードレスフォーム
C# モーダルフォームとモードレスフォームC# モーダルフォームとモードレスフォーム
C# モーダルフォームとモードレスフォームHiroki Takahashi
 
C#でディレクトリを再帰的に取得する
C#でディレクトリを再帰的に取得するC#でディレクトリを再帰的に取得する
C#でディレクトリを再帰的に取得するHiroki Takahashi
 

More from Hiroki Takahashi (10)

C# Database操作6 SqlDataAdapterを使用したデータの更新-
C# Database操作6  SqlDataAdapterを使用したデータの更新-C# Database操作6  SqlDataAdapterを使用したデータの更新-
C# Database操作6 SqlDataAdapterを使用したデータの更新-
 
C# Database操作5 SqlDataAdapterを使用したデータの取得-
C# Database操作5  SqlDataAdapterを使用したデータの取得-C# Database操作5  SqlDataAdapterを使用したデータの取得-
C# Database操作5 SqlDataAdapterを使用したデータの取得-
 
C# Database操作4 トランザクション処理-
C# Database操作4  トランザクション処理-C# Database操作4  トランザクション処理-
C# Database操作4 トランザクション処理-
 
C# Database操作3 データの更新-
C# Database操作3  データの更新-C# Database操作3  データの更新-
C# Database操作3 データの更新-
 
C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装
 
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行するC# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
 
C# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベントC# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベント
 
C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成
 
C# モーダルフォームとモードレスフォーム
C# モーダルフォームとモードレスフォームC# モーダルフォームとモードレスフォーム
C# モーダルフォームとモードレスフォーム
 
C#でディレクトリを再帰的に取得する
C#でディレクトリを再帰的に取得するC#でディレクトリを再帰的に取得する
C#でディレクトリを再帰的に取得する
 

C#によるファイルの読み書き