前提・実現したいこと
ファイル操作についてです。
先ほど作ったプログラムが汚く、ソースが長いので書き直そうとしています。
(「別プロセスでの使用されていてアクセスできません」でよく引っ掛かりこのような汚いコードになってしまいました...)
追記:
尚、現在はエラーは発生しておらず、Test_Memo_Windowで、
Create_Memo_Windowのwindow2.memo.Text = streamReader.ReadToEnd();
にあたる部分を製作中です.
該当のソースコード
C#
1 private void Create_Memo_Window(string path) 2 { 3 Window2 window2 = new Window2(path); 4 //子windowのタイトル名 5 window2.Title = sY.ToString() + "/" + sM.ToString() + "/" + array_day[clPoint_y, clPoint_x]; 6 7 //ファイル処理 8 //もしなければ.txtを作り開く 9 if (!File.Exists(path)) 10 { 11 FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite); 12 fileStream.Close(); 13 //File.Create(path); 14 } 15 //ファイルが存在した場合ファイルの中身を読み込む 16 else if (File.Exists(path)) 17 { 18 //txt内の文字を読み取り,表示させる 19 StreamReader streamReader = new StreamReader(path, Encoding.GetEncoding("Shift_JIS")); 20 window2.memo.Text = streamReader.ReadToEnd(); 21 streamReader.Close(); 22 } 23 //出力する 24 window2.ShowDialog(); 25 }
のソースを
C#
1 private void Test_Memo_Window(string path) 2 { 3 Window2 window2 = new Window2(path); 4 //子windowのタイトル名 5 window2.Title = sY.ToString() + "/" + sM.ToString() + "/" + array_day[clPoint_y, clPoint_x]; 6 7 using (FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite)) 8 { 9 //txt内の文字を読み取り,表示させる 10 11 } 12 //出力する 13 window2.ShowDialog(); 14 }
に直したいです。
以下は子ウインドウの一部処理です。
C#
1 private static string win1_path = "test"; 2 public Window2(string p_path) 3 { 4 InitializeComponent(); 5 win1_path = p_path; 6 7 } 8 9 private void Saving_Memo() 10 { 11 //テキストの値を取得 12 string textValue = memo.Text; 13 //パスを取得 14 string path = win1_path; 15 //書き込む設定 16 StreamWriter streamWriter = new StreamWriter(path, false, Encoding.GetEncoding("Shift_JIS")); 17 //文字列データを書き込む 18 streamWriter.Write(textValue); 19 streamWriter.Close(); 20 21 MessageBox.Show("保存しました"); 22 } 23 24 25 26 private void Save_MenuItem_Click(object sender, RoutedEventArgs e) 27 { 28 Saving_Memo(); 29 }
試したこと
・(ほぼわかりきっていましたが)usingブロック内にStreamReaderを入れ込んだところ別プロセスで使用されていますと表示されました。
・fileStream.Readも行ってみましたが、fileStream.Read(0, path.Length);
の0の前と文字コードの指定方法が分かりませんでした。
補足情報(FW/ツールのバージョンなど)
Windows10
Visual Studio 2019 16.2.5
WPFアプリ
.NET Framework 4.7.2
回答1件
あなたの回答
tips
プレビュー