扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
专注于为中小企业提供成都网站建设、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业溧阳免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
Dim txt As String = My.Computer.FileSystem.ReadAllText("c:\新建 文本文档.txt", System.Text.Encoding.Default) '先读取文本中所有内容
My.Computer.FileSystem.WriteAllText("c:\新建 文本文档.txt", "", False, System.Text.Encoding.Default) '清空原文本内容
Dim AllLine() = Split(txt, vbCrLf) '按回车符号切割成数组
For i As Integer = 0 To UBound(AllLine) '循环数组
' AllLine(i) = Replace(AllLine(i), "000", "111") '如果所有行都是统一转换则本条生效
If i = 5 Then '只转换第六行 起始是0,所以5实际为第6行
AllLine(i) = Replace(AllLine(i), "000", "111")
End If
My.Computer.FileSystem.WriteAllText("c:\新建 文本文档.txt", AllLine(i) vbCrLf, True, System.Text.Encoding.Default) '按行重新写入
Next
End Sub
.net应该提供了此类函数。如C#就有File.AppendAllText(filename,string)用于追加内容,File.ReadAllLine(filename)用于读取多行。
在窗体上添加2个文本框,1个按钮:
其中1个文本框用来输入:源文件夹,另1个文本框用来输入目标文件夹
1个按钮编写代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim MySourceFolder As String
If Microsoft.VisualBasic.Right(TextBox1.Text, 1) = "\" Then
MySourceFolder = TextBox1.Text
Else
MySourceFolder = TextBox1.Text "\"
End If
Dim MyDestFolder As String
If Microsoft.VisualBasic.Right(TextBox2.Text, 1) = "\" Then
MyDestFolder = TextBox2.Text
Else
MyDestFolder = TextBox2.Text "\"
End If
Dim MyDir As New System.IO.DirectoryInfo(MySourceFolder)
Dim MyFiles() As System.IO.FileInfo = MyDir.GetFiles("*.txt")
For Each MyFile As System.IO.FileInfo In MyFiles
System.IO.File.Copy(MySourceFolder MyFile.Name, MyDestFolder MyFile.Name, True) '允许同名覆盖,否则为False
Next
End Sub
这段代码的问题是:
首先for each循环在files里查找文件对象,但是f变量声明为string了,无法让它获取对象;
然后file.copy的变量file没有任何声明,也没有初始化赋值等;
最后,整个for each循环里查找集合files的文件,由于初始化的循环计数器仍然按照最初设定的文件数目向后递增(文件地址),但是实际文件删除一部分,后续的文件位置就不能跟循环计数指针匹配了,所以默认为查找不到文件,将会报错。一般的做法时把复制和删除分别放在2次循环里,第一次只复制文件,第二次才去删除。
软糖来告诉你吧。
VB.net中读写文件主要使用System.IO命名空间。
① 使用 File.ReadAllText 读取
Dim s As String = System.IO.File.ReadAllText("C:\a.txt")
② 使用 StreamReader 读取,注意编码格式和写入的编码保持一致。
Dim sr As StreamReader = New StreamReader("C:\a.txt", System.Text.Encoding.UTF8)
Dim s As String = sr.ReadToEnd()
sr.Close()
③ 使用 File.WriteAllText 写入,会覆盖同名的文件。
Dim 要写的内容 As String = ""
File.WriteAllText(文件路径, 要写的内容, System.Text.Encoding.UTF8)
④ 使用 StreamWriter 写入。
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter("C:\a.txt", False, System.Text.Encoding.UTF8)
sw.WriteLine(TextTB.Text)
sw.Close()
⑤ 使用 StreamWriter 追加写入。
将上面代码的第二个参数False改为True。
◆ 满意请采纳,谢谢 ◆
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流