vb.net编程,修改和删除txt文档中的数据问题

用vb.net编程,将需要的数据存入txt文件中,现在要删除txt中的某一个数据(一个数据即一行,故可看作删除txt中的某一行),应该要如何实现呢?求思路和代码,谢谢!我... 用vb.net编程,将需要的数据存入txt文件中,现在要删除txt中的某一个数据(一个数据即一行,故可看作删除txt中的某一行),应该要如何实现呢?求思路和代码,谢谢!
我尝试了将txt文本中的数据放入一个集合,然后删除集合中的某一项,再将集合中的数据写入txt中,但是运行时会有警告:Collection index must be in the range 1 to the size of the collection.请问是怎么回事呢?请高手帮我看看,具体代码如下:
Dim sr As StreamReader = New StreamReader("D:\Temp.txt")
Dim combo1 As Double
Dim crt As New Collection()
’读取文本内容放入集合
Do
combo1 = sr.ReadLine()
crt.Add(Item:=combo1)
Console.WriteLine(combo1)
a = a + 1
Loop Until sr.Peek = -1
sr.Close()
'将集合中重复的数据项删除
For i = 1 To crt.Count
For j = 1 To crt.Count
If crt(i) <> crt(j) Then
If i <> j Then
crt.Remove(j)
End If
End If
Next j
Next i
‘判断需删除的数据项,再新建一个txt文件,并将集合中的数据项按行写入
Dim file1 As New System.IO.StreamWriter("D:\Temp.txt", True)
For i = 1 To crt.Count
If crt(i) = TextBox1.Text Then
crt.Remove(i)
End If
file1.WriteLine(crt(i))
file1.Close()
Next i
程序运行到以上第一段就出现警告,所以不知道后面的有没有,可以的话也请帮我看一下吧,谢谢!还有,集合中的数据项好像是只读的,可是我希望将里面的数据按一定顺序(从小到大)排列,是否可以实现呢?该如何做?非常感谢!
如果能够解决我的问题还会另外加分,请高手不吝赐教!
展开
 我来答
pzhkudu
2011-06-15 · TA获得超过249个赞
知道答主
回答量:359
采纳率:0%
帮助的人:147万
展开全部
为什么非要存成TXT文件呢?最好的办法是将你的这些数据存放在DataSet对象里,然后用DataSet对象的WriteXML方法写入文件。下次读取时,使用该对象的ReadXML方法就可以取回存在文件中的数据了。你想增、删、编辑都可以,很方便的!如果非要生成TXT文件,可以在DataSet对象顺序读取数据,然后再生成想要的TXT文件。你也用不着去追究IO流的操作了。
更多追问追答
追问
不是非要存成txt,而是我只会这么做……你讲的东西太高深了……完全不懂啊……
追答
Public UserInf As New DataSet  ‘定义DataSet对象!

Sub LoadTable() ’此处DataSet对象读取本地文件,文件名是UserData.DLL。如果没有数据文件时,就会初始化UserData.DLL文件。也是就是如何初始生成UserData.dll文件。
Try
UserInf.ReadXml(Microsoft.VisualBasic.Left(System.Reflection.Assembly.GetExecutingAssembly.Location, InStrRev(System.Reflection.Assembly.GetExecutingAssembly.Location, "\", -1, CompareMethod.Text)) + "UserData.dll")
DataGridView1.DataSource = UserInf.Tables(0)
Catch ex As Exception
If Dir(Microsoft.VisualBasic.Left(System.Reflection.Assembly.GetExecutingAssembly.Location, InStrRev(System.Reflection.Assembly.GetExecutingAssembly.Location, "\", -1, CompareMethod.Text)) + "UserData.dll") Nothing Then
FileSystem.Kill(Microsoft.VisualBasic.Left(System.Reflection.Assembly.GetExecutingAssembly.Location, InStrRev(System.Reflection.Assembly.GetExecutingAssembly.Location, "\", -1, CompareMethod.Text)) + "UserData.dll")
End If
UserInf.Tables.Add("UserData")
UserInf.Tables(0).Columns.Add("账号")
UserInf.Tables(0).Columns.Add("密码")
UserInf.Tables(0).Columns.Add("性别")
UserInf.Tables(0).Columns.Add("学历")
UserInf.Tables(0).Columns.Add("职业")
UserInf.Tables(0).Columns.Add("爱好")
'UserInf.Columns.Add("账号")
DataGridView1.DataSource = UserInf.Tables(0)
End Try
End Sub

Sub SaveDataFile() ‘此函数是对DataSet对象进行写入文件!
UserInf.WriteXml(Microsoft.VisualBasic.Left(System.Reflection.Assembly.GetExecutingAssembly.Location, InStrRev(System.Reflection.Assembly.GetExecutingAssembly.Location, "\", -1, CompareMethod.Text)) + "UserData.dll")
End Sub
=========================
以前函数根据编程的需要调用相应的DataSet读取和存入方法函数。实现相应功能。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6084e0906
2011-06-16
知道答主
回答量:5
采纳率:0%
帮助的人:8287
展开全部
crt的索引必须是从1开始的,应该是你设置错了,For i = 1 To crt.Count
改成For i = 1 To crt.Count-1试下
追问
我试过还是同样问题。现改用数组代替集合,问题解决了……但在排序时用combobox.items(i)照着书上冒泡排序修改后有问题……你能帮我看一下吗?
For j = 0 To N - 2 'N=3
For i = 0 To N - 2 - j
If (Int(ComboBox1.Items(i)) > Int(ComboBox1.Items(i + 1))) Then
……
End If
警告:InvalidArgument=Value of '3' is not valid for 'index'.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夷蒙广谨
2020-10-02 · TA获得超过1147个赞
知道小有建树答主
回答量:1999
采纳率:100%
帮助的人:9.7万
展开全部
微软的bug~~~~
我之前也好几次遇到同样的问题~~~
重启机器~~~
到项目文件夹下找到
bin
文件夹~~
整个删除掉~~~
然后打开vs
再执行的时候它就会生成新的了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式