質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

1765閲覧

ファイルが開けません

unikuma

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/07/17 11:09

前提・実現したいこと

日記ソフトを作ってます。

OpenFileDialogで開いたファイルをStreamReaderで読ませたいです。

ですが、次の場所でエラーが出てます。

発生している問題・エラーメッセージ

ハンドルされていない例外 System.IO.FileNotFoundException: 'ファイル 'C:\Users\user\source\repos\もどき日記2\もどき日記2\bin\Debug\{ofdpath}' が見つかりませんでした。 この例外は、最初にこの呼び出し履歴 [外部コード] もどき日記2.Form1.開くダイアログ() 場所: Form1.cs もどき日記2.Form1.開くToolStripMenuItem_Click(object, System.EventArgs) 場所: Form1.cs [外部コード] もどき日記2.Program.Main() 場所: Program.cs でスローされました

該当のソースコード

C#

1private void 開くダイアログ() 2 { 3 //OpenFileDialogクラスのインスタンスを作成 4 OpenFileDialog ofd = new OpenFileDialog(); 5 6 //はじめのファイル名を指定する 7 //はじめに「ファイル名」で表示される文字列を指定する 8 ofd.FileName = ""; 9 10 //はじめに表示されるフォルダを指定する 11 //指定しない(空の文字列)の時は、現在のディレクトリが表示される 12 ofd.InitialDirectory = @"C:\もどき日記ver.1\日記データフォルダ\"; 13 14 //[ファイルの種類]に表示される選択肢を指定する 15 //指定しないとすべてのファイルが表示される 16      //mddiはオリジナルの拡張子です。 17 ofd.Filter = "日記ファイルデータ(*.mddi)|*.mddi;*.mddi"; 18 19 //[ファイルの種類]ではじめに選択されるものを指定する 20 //2番目の「すべてのファイル」が選択されているようにする 21 ofd.FilterIndex = 2; 22 23 //タイトルを設定する 24 ofd.Title = "開くファイルを選択してください"; 25 26 //ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする 27 ofd.RestoreDirectory = true; 28 29 //存在しないファイルの名前が指定されたとき警告を表示する 30 //デフォルトでTrueなので指定する必要はない 31 ofd.CheckFileExists = true; 32 33 //存在しないパスが指定されたとき警告を表示する 34 //デフォルトでTrueなので指定する必要はない 35 ofd.CheckPathExists = true; 36 37 //ダイアログを表示する 38 if (ofd.ShowDialog() == DialogResult.OK) 39 { 40 string ofdpath = ofd.FileName; 41         42 //次の文でエラーが出てます 43 StreamReader sr = new StreamReader(@"{ofdpath}"); 44 45 while (!sr.EndOfStream) 46 { 47 // CSVファイルの一行を読み込む 48 string line = sr.ReadLine(); 49 50 // 読み込んだ一行をカンマ毎に分けて配列に格納する 51 string[] values = line.Split(';'); 52 53 // 配列からリストに格納する 54 List<string> lists = new List<string>(); 55 lists.AddRange(values); 56 57 textBox1.Text = lists[0]; 58 textBox2.Text = lists[1]; 59 break; 60 } 61 } 62 }

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio Community 2019
Version 16.8.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

StreamReader sr = new StreamReader(ofdpath);

でいいやん

投稿2021/07/17 11:49

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

diff

1- StreamReader sr = new StreamReader(@"{ofdpath}"); 2+ StreamReader sr = new StreamReader($"{ofdpath}");

リファレンス読もうや。

$ - 文字列補間 (C# リファレンス)

投稿2021/07/17 11:15

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unikuma

2021/07/17 11:32

ありがとうございます。教えてくれたリファレンスをしっかり読んでみますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問