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
程序运行到以上第一段就出现警告,所以不知道后面的有没有,可以的话也请帮我看一下吧,谢谢!还有,集合中的数据项好像是只读的,可是我希望将里面的数据按一定顺序(从小到大)排列,是否可以实现呢?该如何做?非常感谢!
如果能够解决我的问题还会另外加分,请高手不吝赐教! 展开
我尝试了将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
程序运行到以上第一段就出现警告,所以不知道后面的有没有,可以的话也请帮我看一下吧,谢谢!还有,集合中的数据项好像是只读的,可是我希望将里面的数据按一定顺序(从小到大)排列,是否可以实现呢?该如何做?非常感谢!
如果能够解决我的问题还会另外加分,请高手不吝赐教! 展开
展开全部
为什么非要存成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读取和存入方法函数。实现相应功能。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
crt的索引必须是从1开始的,应该是你设置错了,For i = 1 To crt.Count
改成For i = 1 To crt.Count-1试下
改成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'.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
微软的bug~~~~
我之前也好几次遇到同样的问题~~~
重启机器~~~
到项目文件夹下找到
bin
文件夹~~
整个删除掉~~~
然后打开vs
再执行的时候它就会生成新的了~
我之前也好几次遇到同样的问题~~~
重启机器~~~
到项目文件夹下找到
bin
文件夹~~
整个删除掉~~~
然后打开vs
再执行的时候它就会生成新的了~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询