查看文章
|
<VB.net>Visual Basic.NET文本操作
2007-07-05 11:47
将文本文件导入数组
开始时引用 Imports System.IO 按钮的Click事件 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '打开目标文件(文件流) Dim myFs As New FileStream(Application.StartupPath & "/a.txt", FileMode.Open, FileAccess.Read) '读文件 Dim r As New StreamReader(myFs) Dim i As Integer Dim myLine, tempStr As String '创建数组,接收文件数据 Dim myLineStr(), a(100), b(100) As String Dim c(100) As Integer i = 0 myLine = r.ReadLine Do While Not (myLine Is Nothing) myLineStr = myLine.Split(",") a(i) = myLineStr(0) b(i) = myLineStr(1) c(i) = myLineStr(2) i += 1 Loop End Sub 在VB.NET里操作文本文件 在.NET里的System.IO.File和System.IO.FileInfo里的OpenText和AppenText等几个方法都是使用UTF-8编码操作文件的.这就导致如果操作不是使用UTF-8编码编写的文件时将会出现乱码现象!!! 解决方法就是对文本文件使用字节流操作,即不使用.NET里提供的OpenText和AppenText等几个方法,而是将文本当成二进制文件来操作,并且在操作时使用Encoding的方法进行相应的解码即可.实现代码如下: 打开文本文件: Public Function LoadFile(ByVal FileName As String) as String If FileName= "" Then Return "" End If Try Dim FileReader As FileStream = File.Open(FileName, FileMode.Open) Dim FileByte(FileReader.Length) As Byte FileReader.Read(FileByte, 0, FileReader.Length) '转成系统对应的编码字符 Dim MyEncoder As Encoding = Encoding.Default FileReader.Close() FileReader = Nothing Return New String(MyEncoder.GetChars(FileByte)) Catch e As Exception Return "" End Try End Sub 保存文件: Public Sub SaveToFile(ByRef Conten As String, ByVal FileName As String) '/*将Conten字符串的内容写入FileName文件 If FileName = "" Then Exit Sub End If Try Dim FileToWrite As FileStream = File.Create(FileName) Dim rByte() As Byte = Encoding.Default.GetBytes(Conten.ToCharArray) FileToWrite.Write(rByte, 0, rByte.Length) FileToWrite.Close() FileToWrite = Nothing Catch e As Exception End Try End Sub |