VB.NET 創建文件以及文件的讀寫(創建隨機數)


創建文件

Dim strFile As String = String.Format("C:\ErrorLog.txt", DateTime.Today.ToString("dd-MMM-yyyy"))
File.AppendAllText(strFile, String.Format("Error Message in  Occured at-- {0}{1}", DateTime.Now, Environment.NewLine))

第一句話的意思是在c盤下面創建一個ErrorLog.txt的文本文檔,第二句話的意思是,在這個文本文檔中寫入"Error Message in Occured at--后面接當前時間,每打印一句就換一行。

上面是直接從本地磁盤寫,那么,如果從數據庫中要讀取后綴.bin的文件,然后在寫入本地磁盤該如何做呢?

從數據庫讀取文件

 

                           '讀取數據庫中bin文件
                            Dim blobFiles As Integer = 0
                            Try
                                System.IO.Directory.CreateDirectory("C:\var\")
                                myCommand.CommandText = "select  blobFile from  evnet.join_server_firmware_version order by dttDateTime desc" '從數據庫中讀取存放文件字段按時間最新
                                Dim dr As MySqlDataReader = myCommand.ExecuteReader()
                                dr.Read()
                                Dim b(dr.GetBytes(blobFiles, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte '聲明b數組存放讀取到的dr
                                dr.GetBytes(blobFiles, 0, b, 0, b.Length) '將b讀取到的數存放在blobFiles中
                                dr.Close()
                                conn.Close()
                                conn.Open()
                                myCommand.CommandText = "select  vchfimware_versionName from  evnet.join_server_firmware_version order by dttDateTime desc"
                                VersionName = myCommand.ExecuteScalar
                                conn.Close()
                                If System.IO.File.Exists("C:\var\" + VersionName + ".txt") Then '判斷當前c盤是否存儲有該文件夾

                                Else
                                    Dim fs12 As New System.IO.FileStream("C:\var\" + VersionName + ".txt ", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)  '無則創建改文件
                                    fs12.Write(b, blobFiles, b.Length) '向創建的文件中開始寫,一次性寫完
                                    fs12.Close() '關閉讀寫操作,以免引發異常
                                    fs12.Dispose()
                                End If
                                '======================
                            Catch ex As Exception
                                Debug.Print("#######################" & ex.StackTrace)
                                Debug.Print("########" & ex.Message)
                                Throw ex
                            End Try

 

每次只讀取2014長度的字節

 

 Dim fs As New System.IO.FileStream("C:\var\" + VersionName + ".txt", IO.FileMode.Open, IO.FileAccess.Read)  Dim buffer(1023) As Byte
 Dim re As New System.IO.BinaryReader(fs)
 Dim numdouble As Double = (fs.Length / 1024)
 num = Math.Ceiling(numdouble) '此函數用於判斷是否有小數,有小數將自動取整比如:1.2將會取2,1.6將會取2
 fs.Seek(i * ByNum.c, SeekOrigin.Begin)
 re.Read(buffer, 0, 1024) '表示從0位開始讀1024位 如果想取分組包長度可用 buffer.Length  如果想取數據則直接可取buffer

 將VS中輸出的debug統一放入指定的txt文件夾中

 Public Const LOG_PATH As String = "C:\Users\Public\Documents\ECharge\"
        If Not System.IO.Directory.Exists(Main.LOG_PATH) Then
            System.IO.Directory.CreateDirectory(Main.LOG_PATH)
        End If
        If Not System.IO.Directory.Exists(Main.LOG_PATH & "Connect Server") Then
            System.IO.Directory.CreateDirectory(Main.LOG_PATH & "Connect Server")
        End If
        If Not System.IO.Directory.Exists(Main.LOG_PATH & "Connect Server\Exception\") Then
            System.IO.Directory.CreateDirectory(Main.LOG_PATH & "Connect Server\Exception\")
        End If
        If Not System.IO.Directory.Exists(Main.LOG_PATH & "Connect Server\Exception\" & Main.serverID & "\") Then
            System.IO.Directory.CreateDirectory(Main.LOG_PATH & "Connect Server\Exception\" & Main.serverID & "\")
        End If
        Dim Str As New FileStream(Main.LOG_PATH & "Connect Server\Exception\" & Main.serverID & "\" & "DebugMessages.txt", System.IO.FileMode.Append)
        Dim DebugFile As New StreamWriter(Str)
        Dim Listener = New TextWriterTraceListener(DebugFile)

        Debug.Listeners.Add(Listener)
        Debug.AutoFlush = True

        Debug.Print("----- start debug print to file")

     上述代碼將程序運行的debug放到c盤指定的目錄,並創建一個DebguMessage.txt文檔,執行后效果圖如下:

   

VB.NET創建隨機數 

 1     '產生隨機數
 2         Try
 3             Dim Vchar As String = "00030,0031,00032,00033,00034,00035"
 4             Dim VcArray() As String = Split(Vchar, ",") '將字符串生成數組
 5             Dim VNum As String = ""
 6             Dim objRandom As Random = New Random
 7             objRandom.Next(0, 5)
 8             VNum = VNum & VcArray(Int(objRandom.Next(0, 5))) '數組從0開始讀取,后面指定讀取最大界限,防止數組越界
 9             MessageBox.Show(VNum)
10         Catch ex As Exception
11             Debug.Print(ex.Message)
12             Throw ex
13         End Try

 VB.NET Integer類型轉成byte類型並調用sort方法重新對元素排序 

 Public Sub setChargerStattimeStamp(ByRef StataTimeStamp As Integer)
        Try
            chargerStatTimeStamp = BitConverter.GetBytes(StataTimeStamp)
            Dim sorts As List(Of Byte) = New List(Of Byte)(chargerStatTimeStamp)
            sorts.Sort()
            chargerStatTimeStamp(0) = sorts(0)
            chargerStatTimeStamp(1) = sorts(1)
            chargerStatTimeStamp(2) = sorts(2)
            chargerStatTimeStamp(3) = sorts(3)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

  VB.NET byte免拼接高級寫法

 Public Sub setRemoteUID(ByRef byteArray() As Byte)
        Try
            'D1 46 A3 6A 5E 08 04 00 01 D7 15 65 0B 94 3D 1D   原始UID:209701631069429  
            Array.Copy(byteArray, 0, Me.remoteUid, 0, UID_LENGTH)
            Array.Resize(Me.remoteUid, UID_LENGTH)
            ArrayRemove(byteArray, UID_LENGTH)
            Dim id As String() = Me.remoteUid.Select(Function(byt) byt.ToString("x2")).ToArray
            Dim uid As String = String.Join("-", id).ToUpper
            Me.remoteUid_Value = uid 
            Dim id1 As String() = Me.remoteUid.Select(Function(byt) byt.ToString("x2")).ToArray
            Dim uid1 As String = String.Join("", id).ToUpper
            Meter_Reading.ByNum.Uid = Me.remoteUid_Value
            Meter_Reading.ByNum.vchprivateID = uid1
            Debug.Print("##############remoteUid_Value=" & Me.remoteUid_Value)
            Debug.Print("##############vchprivateID=" & Meter_Reading.ByNum.vchprivateID)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

 

                        end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM