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

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

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

Re[2]: ファイル保存時にデータが重複してしまう。


(過去ログ 67 を表示中)

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

■38895 / inTopicNo.1)  ファイル保存時にデータが重複してしまう。
  
□投稿者/ みのり (6回)-(2009/07/27(Mon) 12:36:52)

分類:[VB.NET/VB2005 以降] 

超初心者のみのりです。
いつもお世話になります。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=38503

以前フォルダ作成とファイルについて質問させていただきました。




If System.IO.File.Exists(fileName) = False Then
file = New System.IO.StreamWriter(fileName, False, System.Text.Encoding.Default)
file.WriteLine(buff & vbCrLf)
file.Close()
End If

↑ファイルが無いという条件が成立したときにしか書き込みは行われず、
何行もあるデータが一行しか書き込みできていませんでした。



file = New System.IO.StreamWriter(fileName, True, System.Text.Encoding.Default)
file.WriteLine(buff)
file.Close()

↑アドバイスを頂いて追加書き込みに変更したところ解決したと思ったのですが、
2度、3度とコードを走らせると、同じデータが追加されてしまいます。
(追加モードだからなのでしょうけど^^;)

同じデータがある場合、上書きもしくは追加させない方法があればアドバイスおねがいいたします。

よろしくおねがいします。
引用返信 編集キー/
■38899 / inTopicNo.2)  Re[1]: ファイル保存時にデータが重複してしまう。
□投稿者/ gtk2k (24回)-(2009/07/27(Mon) 13:33:33)
ファイルが存在した場合は、そのファイルを読み込んで、データが存在するかどうかチェックしないといけない。

Dim writeData As String = "書き込もうとしているデータ"
If Array.IndexOf(File.ReadAllLines(fileName), writeData) = -1 Then
File.AppendAllText(fileName, writeData & vbCrLf)
End If

引用返信 編集キー/
■38930 / inTopicNo.3)  Re[2]: ファイル保存時にデータが重複してしまう。
□投稿者/ みのり (7回)-(2009/07/28(Tue) 00:12:17)
gtk2kさんアドバイスありがとうございました。
見返してみると、かなり私の質問が悪かったです。
正しい質問もできないレベルお許しください(_ _;)

file = New System.IO.StreamWriter(fileName, True, System.Text.Encoding.Default)
file.WriteLine(strBuff)
file.Close()
End Select
Loop While (1)

という感じでデータを一行ずつ読み込ませLoopさせていますので、

1.ファイル削除や上書きでは正常にデータがファイルに保存されない。
(Loop内に書いてましたので^^;)

2.データが更新されるので常に新しいデータを「上書き」したい。

3.ファイルまでのパス・ファイル名はデータから取っているのでLoopの外では
ファイルを絶対パスで指定しないといけない(わかりにくいですよね?^^;)


という問題がありました。


正攻法ではないとは思いますが、データのダウンロードを2度行い、
一度目でファイルの削除



Case Is > 0 ' 正常読み込み
'■■保存ディレクトリー・ファイルの削除
If System.IO.File.Exists("c:\" & strBuff.Substring(0, 2) & ".txt") = True Then
System.IO.File.Delete("c:\" & strBuff.Substring(0, 2) & ".txt")
End If
End Select
Loop While (1)
End If


2度目でファイルへの書き込みで、一応の解決には至りました。
解決にいたった過程(方法)をここで公開するのは、かなり恥ずかしく・・・
もっとスマートな方法なんかあるんだろうな〜と思い、恥も覚悟し
皆様につっこみを入れていただきたく思います。

一応解決ですがいい方法があれば今後のためにもアドバイスおねがいします。

つたない長文失礼しました。
今後もよろしくおねがいいたします。




解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -