2012-03-02 9 views
0

次のコードはアイテムを何度も繰り返しファイルに保存しますが、アイテムを1回だけ保存するにはどうすればいいですか?例えば、number1はすでに私は、次のようなものを使用して、もう一度それを保存しないでくださいどのようにしてtxtファイルに保存されている場合はアイテムが既にtxtファイルに存在するかどうかを確認します

Dim w As New IO.StreamWriter("E:\test.txt", True) 
w.WriteLine(ListBox1.SelectedItem, True) 
w.Close() 

dim exist As IO.FileAccess ("e:\s.txt") 

if exist.that.item.is.exist= true then 
    w.WriteLine(ListBox1.SelectedItem, True) 
else 
    msg "that item is already in your txt file " 
end if 

は、例えばlistbox1項目は以下のとおりです。

"番号1"
"number2の"
"number3"
"数4" 私はVS 2010を使用しています

+0

テキストファイルのデータコントラクトは何をSelectedValueのは?どのようなルールをフォーマットに頼ることができますか?テキストラインごとに1つの固有値が常にあるはずですか? – asawyer

+0

listbox1のアイテムは "number1"、 "number2"、 "number3"のようなものです –

答えて

1
Dim hash As HashSet(Of String) = New HashSet(Of String)(File.ReadAllLines("E:\test.txt")) 

If Not hash.Contains(ListBox1.SelectedItem.ToString()) Then 
    Dim w As New IO.StreamWriter("E:\test.txt", True) 
    w.WriteLine(ListBox1.SelectedItem, True) 
    w.Close() 
Else 
    'Item is already in text file 
End If 
+0

そのエラーを返します::メソッドまたは操作が実装されていませんbtw私はvs 2010を使用します –

+0

どのラインでエラーが表示されますか? –

+0

そのではないhash.Containsが「含まれて」いること(列の)windowsApllication3.HasSetのmemeber は、「含む」 –

0

これを試してください。それはマイナーな変更を加えた@Diegoコードです。 (私はまだ編集する権限がありません)

Dim hash As List(Of String) = New List(Of String)(System.IO.File.ReadAllLines("E:\test.txt")) 

    If Not hash.Contains(ListBox1.SelectedValue) Then 
     Dim w As New IO.StreamWriter("E:\test.txt", True) 
     w.WriteLine(ListBox1.SelectedValue, True) 
     w.Close() 
    Else 
     'Item is already in text file 
    End If 
  1. は、System.IOを追加します。 File.ReadAllLines
  2. に変更のSelectedItemは
+0

を参照してください。HashSetが機能しない場合は、List(Of String)を代わりに使用してみることができます。 –

関連する問題