C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ファイル書き込み


(過去ログ 101 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■60162 / inTopicNo.1)  ファイル書き込み
  
□投稿者/ ワ (1回)-(2011/06/22(Wed) 09:09:05)

分類:[.NET 全般] 

VS2008 です

ファイルの書き込みをします。

Dim sw As New System.IO.StreamWriter("c:\test.txt", False, System.Text.Encoding.GetEncoding("shift_jis"))

Dim sw As New System.IO.StreamWriter("c:\test.txt", True, System.Text.Encoding.GetEncoding("shift_jis"))

で行います。

処理中にキャンセルをした場合は、途中で処理をなしにしたいです。

上記のプログラムだと、書き込まれてしまいます。

どうすれば、いいでしょうか。
引用返信 編集キー/
■60165 / inTopicNo.2)  Re[1]: ファイル書き込み
□投稿者/ shu (799回)-(2011/06/22(Wed) 09:16:55)
No60162 (ワ さん) に返信

・キャンセルをされた場合に元に戻す処理をする(元の状態に戻せないとだめ)

・ある程度バッファリングしてから書き込む(書込み前の状態するなら上記と同じ)

・test.txtでなく仮のファイルに書いてからリネーム(test.txtがあれば先に削除)

・test.txtが既に存在していたら別名に変更しておいて処理を行いキャンセルされたら戻す

どんな方法でもキャンセルされた場合の処理は必要になると思います。

引用返信 編集キー/
■60169 / inTopicNo.3)  Re[2]: ファイル書き込み
□投稿者/ ツδ・email (1回)-(2011/06/22(Wed) 09:22:38)
たしかにそうですね。

一時ファイルは使用できますか?
>
引用返信 編集キー/
■60175 / inTopicNo.4)  Re[3]: ファイル書き込み
□投稿者/ shu (800回)-(2011/06/22(Wed) 12:37:17)
No60169 (ツδ・email さん) に返信
> たしかにそうですね。
>
> 一時ファイルは使用できますか?
>>
System.IO.Path.GetTempFileName()
でTempファイル名の取得は出来ますが、削除をしないと残ります。
引用返信 編集キー/
■60177 / inTopicNo.5)  Re[1]: ファイル書き込み
□投稿者/ Mira (50回)-(2011/06/22(Wed) 13:27:55)
2011/06/22(Wed) 13:32:11 編集(投稿者)

上書きする場合(ファイルが存在するかチェック)元のファイルを拡張子Bakとかにして
ファイル書き込み作業する方がプログラムが単純になると思います

キャンセルが発生したらBakのファイルを戻せばよいですし

***補足を追加***
一時ファイルに書き込んでから上書き作業する場合は
上書き作業中にキャンセルが発生した場合は元に戻せない可能性があるので
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -