반응형

* VBNET 파일 사용 가능 여부 체크 예제...

 

메인 화면

 

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '파일 열기...
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        If (ofd.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            '선택된 파일 표시...
            label1.Text = ofd.FileName
        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        '파일 사용 유무 체크...
        Dim strErr As String = ""

        If (FileIsUse(label1.Text, strErr)) Then

            label2.Text = "사용 가능한 파일 입니다."

        Else

            label2.Text = "파일 사용중.., " + strErr

        End If


    End Sub


    Private Function FileIsUse(ByVal strFilePath As String, ByRef strErr As String) As Boolean

        Try
            Using fs As System.IO.FileStream = New System.IO.FileStream(strFilePath, _
                                                            System.IO.FileMode.Open, _
                                                            System.IO.FileAccess.Read, _
                                                            System.IO.FileShare.Read)
                '정상적으로 오픈된 파일 다시 닫기...
                fs.Close()

            End Using


        Catch ex As Exception
            strErr = ex.Message.ToString()
            Return False
        End Try

        Return True
    End Function

End Class

 

* 예제 결과

 

파일이 정상적으로 사용 가능 할 때

 

해당 파일을 다른 프로그램에서 사용 중일때

 

 

 

https://kdsoft-zeros.tistory.com/66

 

[C#] File 사용 가능 여부 체크

* C# 파일 사용 가능 여부 체크 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET XML File Write & Read 예제...

 

메인화면

전체 소스 코드

Form1.vb

 

Public Class Form1

    Dim strLocal As String = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\"))
    Dim strXMLFile As String = "\XMLText.xml"

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'XMLFile Write

        '파일이 존재 하면은... 삭제하고 다시...
        If System.IO.File.Exists(strLocal + strXMLFile) Then
            System.IO.File.Delete(strLocal + strXMLFile)
        End If

        'XML Create
        Dim xdDoc As System.Xml.XmlDocument = New System.Xml.XmlDocument()
        '최상위 노드 생성...
        Dim xnRoot As System.Xml.XmlNode = xdDoc.CreateElement("테스트")

        'xmRoot 에 속한 하위 노드...
        Dim xnTmp As System.Xml.XmlNode = xdDoc.CreateElement("XMLFileEx")
        xnTmp.InnerText = "XML Test"

        '최상위 노드에 하위노드 xmTmp 추가... 
        xnRoot.AppendChild(xnTmp)

        'CheckBox 저장부...
        Dim xnCheckBox As System.Xml.XmlNode = xdDoc.CreateElement("ProgramCheckBox")
        Dim xaCheckBox1 As System.Xml.XmlAttribute = xdDoc.CreateAttribute("CheckBox1")
        Dim xaCheckBox2 As System.Xml.XmlAttribute = xdDoc.CreateAttribute("CheckBox2")
        Dim xaCheckBox3 As System.Xml.XmlAttribute = xdDoc.CreateAttribute("CheckBox3")

        '값 대입...
        xaCheckBox1.Value = checkBox1.Checked.ToString()
        xaCheckBox2.Value = checkBox2.Checked.ToString()
        xaCheckBox3.Value = checkBox3.Checked.ToString()

        'xnCheckBox 노드의 속성으로 추가...
        xnCheckBox.Attributes.Append(xaCheckBox1)
        xnCheckBox.Attributes.Append(xaCheckBox2)
        xnCheckBox.Attributes.Append(xaCheckBox3)

        '최상위 노드의 하위 노드로 추가 
        xnRoot.AppendChild(xnCheckBox)

        'Radio 저장부...
        Dim xnRadio As System.Xml.XmlNode = xdDoc.CreateElement("ProgramRadio")
        Dim xaRadio1 As System.Xml.XmlAttribute = xdDoc.CreateAttribute("Radio1")
        Dim xaRadio2 As System.Xml.XmlAttribute = xdDoc.CreateAttribute("Radio2")
        Dim xaRadio3 As System.Xml.XmlAttribute = xdDoc.CreateAttribute("Radio3")

        '값 대입...
        xaRadio1.Value = radioButton1.Checked.ToString()
        xaRadio2.Value = radioButton2.Checked.ToString()
        xaRadio3.Value = radioButton3.Checked.ToString()

        'xnRadio 노드의 속성으로 추가...
        xnRadio.Attributes.Append(xaRadio1)
        xnRadio.Attributes.Append(xaRadio2)
        xnRadio.Attributes.Append(xaRadio3)

        '최상위 노드의 하위 노드로 추가
        xnRoot.AppendChild(xnRadio)

        'XML File 로 저장
        xdDoc.AppendChild(xnRoot)
        xdDoc.Save(strLocal + strXMLFile)

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'XMLFile Read

        '파일이 존재 하지 않으면...
        If Not System.IO.File.Exists(strLocal + strXMLFile) Then
            Return
        End If

        textBox1.Text = ""
        Dim xdDoc As System.Xml.XmlDocument = New System.Xml.XmlDocument()
        'XML File Load
        xdDoc.Load(strLocal + strXMLFile)

        '최상위 노드 1개에 하위 노드를 추가한 부분 읽기...
        For Each xn As System.Xml.XmlNode In xdDoc.ChildNodes

            textBox1.Text += "RootNode = " + xn.Name + System.Environment.NewLine
            textBox1.Text += "하위 노드" + System.Environment.NewLine

            For Each xx As System.Xml.XmlNode In xn

                If xx.Name = "XMLFileEx" Then
                    textBox1.Text += "RootNode ->" + xx.Name + System.Environment.NewLine
                    textBox1.Text += "           " + xx.InnerText + System.Environment.NewLine
                ElseIf xx.Name = "ProgramCheckBox" Then
                    textBox1.Text += "RootNode ->" + xx.Name + System.Environment.NewLine
                    textBox1.Text += "           CheckBox1 = " + xx.Attributes(0).Value.ToString() + System.Environment.NewLine
                    textBox1.Text += "           CheckBox2 = " + xx.Attributes(1).Value.ToString() + System.Environment.NewLine
                    textBox1.Text += "           CheckBox3 = " + xx.Attributes(2).Value.ToString() + System.Environment.NewLine
                Else
                    textBox1.Text += "RootNode ->" + xx.Name + System.Environment.NewLine
                    textBox1.Text += "           Radio1 = " + xx.Attributes(0).Value.ToString() + System.Environment.NewLine
                    textBox1.Text += "           Radio2 = " + xx.Attributes(1).Value.ToString() + System.Environment.NewLine
                    textBox1.Text += "           Radio3 = " + xx.Attributes(2).Value.ToString() + System.Environment.NewLine
                End If

            Next

        Next

    End Sub

End Class

* 예제 결과

 

- 파일 저장 위치 및 파일 내용

 

아래의 그림은 XML 파일 만들기 버튼 클릭 이후 메모장으로 XML 파일 열어본 결과

파일 내용

 

결과 화면

 

https://kdsoft-zeros.tistory.com/64

 

[C#] XML File Write & Read 예제

* C# XML File Write & Read 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; u..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 동적으로 DLL 로드 하여 그 안에 포함된 Form 과 클래스 함수 사용 예제...

테스트 DLL 위치는 위와 같이 그냥 C:\\ 에 놔두었는데 위치는 사용자 맘대로 두어도 괜찮겠습니다.

나중에 소스코드에서 DLL 로드 위치를 사용자가 Dll 이 있는 위치로 지정 하면 되겠습니다.

 

위의 테스트 DLL 은 C# 으로 만들어진 클래스 라이브러리 이며, VBNET 과 C# 은 닷넷 프레임 워크 기반

으로 하는 언어로 둘이 호환성은 아주 좋습니다. VBNET 으로 만들어진 DLL 이나 C# 으로 만들어진 DLL

이나 상관이 없으므로 기존 C# 으로 만들어진 테스트 DLL 을 사용 하였습니다.

 

메인 화면

전체 소스 코드

Form1.vb

 

Public Class Form1

    Dim ab As System.Reflection.Assembly

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        Dim ofd As OpenFileDialog = New OpenFileDialog()
        'DLL 파일만 열 수 있게끔...
        ofd.Filter = "Dll File (*.dll) | *.dll"

        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then

            '선택된 dll 파일 표시...
            label1.Text = ofd.FileName

            '동적 dll 로드
            ab = System.Reflection.Assembly.LoadFile("C:\ClassLibrary1.dll")

        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        '폼 불러오기...

        '파일이 존재 하지 않으면...
        If Not System.IO.File.Exists(label1.Text) Then Return

        'Form
        If (Not ab Is Nothing) Then
            Dim tp() As Type = ab.GetExportedTypes()

            If (tp.Length > 0) Then
                For Each t As Type In tp
                    'Form 이름 찾기
                    If (t.Name = "Form1") Then

                        '객체화
                        Dim ob As Object = Activator.CreateInstance(t)

                        '폼 객체로 변환...
                        Dim f As Form = CType(ob, Form)

                        '폼 실행...
                        f.Show()
                    End If
                Next
            End If

        End If

    End Sub

    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click
        '클래스 불러오기...

        '파일이 존재 하지 않으면...
        If Not System.IO.File.Exists(label1.Text) Then Return

        '클래스 찾기
        If (Not ab Is Nothing) Then
            Dim tp() As Type = ab.GetExportedTypes()

            If (tp.Length > 0) Then
                For Each t As Type In tp
                    '클래스 이름 찾기
                    If (t.Name = "Class1") Then
                        '객체화
                        Dim ob As Object = Activator.CreateInstance(t)
                        '클래스 함수 얻어 오기...
                        Dim mt As System.Reflection.MethodInfo = t.GetMethod("Test")

                        'MethodInfo 인보크 전달인자 : 객체화된 클래스, 클래스 함수 전달인자 값
                        '클래스 함수 리턴값 받아오기...

                        '첫번째 방식...
                        '함수 전달 인자 값 셋팅...
                        'Dim obValue(1) As Object
                        'obValue(0) = 200
                        'obValue(1) = 300
                        'Dim vReturn As Object = mt.Invoke(ob, obValue)

                        '두번째 방식...
                        Dim vReturn As Object = mt.Invoke(ob, New Object() {299, 300})


                        MessageBox.Show(vReturn.ToString())
                        
                    End If
                Next
            End If

        End If

    End Sub
End Class

 

* 폼 불러오기

* 클래스 함수 불러오기

* 예제 결과 화면

 

폼 불러오기 결과 화면

 

 

클래스 함수 불러오기 결과 화면


↓아래는C#으로클래스라이브러리(DLL)만드는방법과위와같이동적으로DLL호출하는방법

https://kdsoft-zeros.tistory.com/61

 

[C#] 동적 DLL 폼 (From) 불러오기 또는 클래스 (Class) 함수 불러오기 예제

* 동적으로 DLL 로드 하여 그 안에 포함된 Form 과 클래스 함수 사용 예제... 시작 하기에 앞서 테스트 DLL 만들기... 그대로 ClassLibrary1 을 사용 하여 만들어서 DLL 안에 내용은 아래의 그림과 같이 폼 하나..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 폴더 복사 예제...

 

메인 화면

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '원본 폴더 열기
        Dim fbd As FolderBrowserDialog = New FolderBrowserDialog()

        If fbd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txtOriginFolder.Text = fbd.SelectedPath
        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        '복사될 대상 위치 폴더 열기
        Dim fbd As FolderBrowserDialog = New FolderBrowserDialog()

        If fbd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txtCopyFolder.Text = fbd.SelectedPath
        End If

    End Sub

    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click
        '폴더 복사
        If txtOriginFolder.Text = "" Or txtCopyFolder.Text = "" Then
            MessageBox.Show("원본 폴더 또는 복사 대상 폴더를 선택해 주세요.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            Return
        End If

        button3.Text = "폴더 복사 중..."
        button3.Refresh()

        If FolderCopy(txtOriginFolder.Text, txtCopyFolder.Text) Then
            MessageBox.Show("폴더 복사가 완료 되었습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
        Else
            MessageBox.Show("폴더 복사가 실패 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If

        button3.Text = "폴더 복사"

    End Sub

    Private Function FileCopy(ByVal strOriginFile As String, ByVal strCopyFile As String) As Boolean

        Dim fi As System.IO.FileInfo = New System.IO.FileInfo(strOriginFile)
        Dim lSize As Long = 0
        Dim lTotalSize As Long = fi.Length
        '버퍼 사이즈 임의 지정...
        Dim bBuf(1024) As Byte

        '복사될 파일이 존재 한다면 삭제하고...
        If System.IO.File.Exists(strCopyFile) Then
            System.IO.File.Delete(strCopyFile)
        End If

        '원본 파일 열기...
        Using fsIn As System.IO.FileStream = New System.IO.FileStream(strOriginFile, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
            '대상 파일 만들기...
            Using fsOut As System.IO.FileStream = New System.IO.FileStream(strCopyFile, IO.FileMode.Create, IO.FileAccess.Write)

                While (lSize < lTotalSize)
                    Try
                        Dim iLen As Integer = fsIn.Read(bBuf, 0, bBuf.Length)   '원본 파일 버퍼크기 만큼 읽기
                        lSize += iLen                                           '실제 원본 파일 읽어온 버퍼 갯수
                        fsOut.Write(bBuf, 0, iLen)                              '읽어온 버퍼만큼 대상 파일에 쓰기
                    Catch ex As Exception
                        fsOut.Flush()
                        fsOut.Close()
                        fsIn.Close()

                        '파일 복사 에러시 대상 파일은 일단 삭제...
                        If System.IO.File.Exists(strCopyFile) Then
                            System.IO.File.Delete(strCopyFile)
                        End If

                        Return False
                    End Try

                End While

                fsOut.Flush()
                fsOut.Close()
            End Using

            fsIn.Close()
        End Using

        Return True

    End Function

    Private Function FolderCopy(ByVal strOriginFolder As String, ByVal strCopyFolder As String) As Boolean
        '폴더가 없으면 만들기..
        If (Not System.IO.Directory.Exists(strCopyFolder)) Then
            System.IO.Directory.CreateDirectory(strCopyFolder)
        End If

        '파일 목록 불러오기...
        Dim strFiles() As String = System.IO.Directory.GetFiles(strOriginFolder)
        '폴더 목록 불러오기...
        Dim strFolders() As String = System.IO.Directory.GetDirectories(strOriginFolder)

        Try
            '파일 복사 부분...
            For Each strFile As String In strFiles
                Dim strName As String = System.IO.Path.GetFileName(strFile)
                Dim strDest As String = System.IO.Path.Combine(strCopyFolder, strName)

                '파일 복사
                FileCopy(strFile, strDest)

            Next

            For Each strFolder As String In strFolders
                Dim strName As String = System.IO.Path.GetFileName(strFolder)
                Dim strDest As String = System.IO.Path.Combine(strCopyFolder, strName)

                FolderCopy(strFolder, strDest)
            Next

        Catch ex As Exception
            Return False
        End Try
        
        Return True

    End Function

End Class

 

* 예제 결과

 

결과 화면

 

 

위 그림들은 테스트 결과 이미지들 입니다. 실제 복사가 정상적으로 이루어 졌는지 복사 하면서 잃게 된 용량은 없는지



https://kdsoft-zeros.tistory.com/50?category=846222

 

[VBNET] FileCopy (파일 복사 예제)

* VBNET 파일 복사 예제... 전체 소스 코드 Form1.vb Public Class Form1 '첫번째 방법... Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click Dim..

kdsoft-zeros.tistory.com

https://kdsoft-zeros.tistory.com/40?category=846222

 

[VBNET] 폴더 및 파일, 드라이브 사이즈 (Size) 구하기

* 폴더 및 파일, 드라이브 목록 및 사이즈 구하기 예제 File Open 버튼 : 파일 대화 상자가 뜨게 되며, 해당 파일 선택 시 위 그림과 같이 파일의 위치 와 사이즈가 표시 됩니다. 다만 사이즈 표시는 기본 Byte..

kdsoft-zeros.tistory.com

 

반응형
반응형

* MD5 를 이용한 파일 체크섬 예제...

 

메인화면

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        '텍스트 파일만 열기...
        'ofd.Filter = "TXT File(*.txt)|*.txt"

        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then

            '파일 내용을 byte 배열로 얻어 오기...
            Dim btAscii() As Byte = System.IO.File.ReadAllBytes(ofd.FileName)
            Dim btHash() As Byte = System.Security.Cryptography.MD5.Create().ComputeHash(btAscii)

            lblSourcePath.Text = ofd.FileName
            textBox1.Text = BitConverter.ToString(btHash).Replace("-", "").ToLower()


            If textBox2.Text <> "" Then
                If textBox1.Text = textBox2.Text Then
                    lbl.Text = "체크섬이 같습니다."
                Else
                    lbl.Text = "체크섬이 다릅니다."
                End If
            End If

        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        '텍스트 파일만 열기...
        'ofd.Filter = "TXT File(*.txt)|*.txt"

        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then

            '파일 내용을 byte 배열로 얻어 오기...
            Dim btAscii() As Byte = System.IO.File.ReadAllBytes(ofd.FileName)
            Dim btHash() As Byte = System.Security.Cryptography.MD5.Create().ComputeHash(btAscii)

            lblDestPath.Text = ofd.FileName
            textBox2.Text = BitConverter.ToString(btHash).Replace("-", "").ToLower()


            If textBox1.Text <> "" Then
                If textBox1.Text = textBox2.Text Then
                    lbl.Text = "체크섬이 같습니다."
                Else
                    lbl.Text = "체크섬이 다릅니다."
                End If
            End If

        End If
    End Sub

End Class

 

* 예제 결과

 

위 그림은 파일 안에 내용이 같았을 경우 만약 다르다면...

 

위 그림과 같이 체크섬이 다르게 표시 됩니다.

 

https://kdsoft-zeros.tistory.com/57

 

[C#] File CheckSum 예제 (MD5 Checksum)

* 파일 MD5 체크섬 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Syst..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 로그 파일 작성 예제...

 

메인 화면

 

위 그림과 같이 리스트뷰 Columns 붉은 테두리 안에 있는 ... 버튼을 클릭하여 ColumnHeader 컬렉션 편집기를 

열어 멤버를 추가 해 줍니다.

첫번째 열은 No. 에 해당하며 Log 갯수를 표시 할 Column

두번째 열은 로그 내용에 해당하며 로그 파일안에 내용을 표시할 Column

 

전체 소스 코드

Form1.vb

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        listView1.View = View.Details
        listView1.FullRowSelect = True
        listView1.GridLines = True

        '2. 로그 남기기...
        Log_Info("Log 프로그램 예제를 시작 합니다.")
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        '2. 로그 남기기...
        Log_Info("Log 프로그램 예제를 종료 합니다.")
    End Sub

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '2. 로그 남기기...
        Log_Info("로그 남기기 버튼을 클릭 하였습니다.")
    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        Dim strLocalPath As String = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\"))

        Dim ofd As OpenFileDialog = New OpenFileDialog()
        '텍스트 파일만 불러오기...
        ofd.Filter = "TXT 파일(*.txt) | *.txt"
        '파일대화상자 시작시 기본 폴더 지정으로 지정된 폴더로 바로 띄우기
        ofd.InitialDirectory = strLocalPath + "\\Log"

        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then

            listView1.Items.Clear()
            Dim strFile As String = ""
            strFile = ofd.FileName
            '파일 체크... 
            If Not System.IO.File.Exists(strFile) Then
                MessageBox.Show("해당 파일이 없거나 선택된 파일이 없습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                Return

            Else
                Dim strValue() As String = System.IO.File.ReadAllLines(strFile)

                For iCount As Integer = 0 To strValue.Length - 1
                    Dim lvi As ListViewItem = New ListViewItem

                    lvi.Text = (iCount + 1).ToString()
                    lvi.SubItems.Add(strValue(iCount))
                    listView1.Items.Add(lvi)

                Next

            End If

        End If
    End Sub

    '1. 로그 함수 작성...
    Private Function Log_Info(ByVal strMsg As String) As Boolean

        Try

            Dim strCheckFolder As String = ""
            Dim strFileName As String = ""

            '현재 EXE 파일가 위치 하고 있는 폴더를 가져옴.
            strCheckFolder = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\"))
            strCheckFolder += "\Log"
            '로그 폴더가 없으면 생성 
            If (FileSystem.Dir(strCheckFolder, FileAttribute.Directory) = "") Then

                System.IO.Directory.CreateDirectory(strCheckFolder)

            End If

            strFileName = strCheckFolder + "\\" + DateAndTime.Now.ToString("yyyyMMdd") + ".txt"

            Dim FileWriter As System.IO.StreamWriter = New System.IO.StreamWriter(strFileName, True)
            FileWriter.Write(DateAndTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " => " + strMsg + vbCrLf)
            FileWriter.Flush()
            FileWriter.Close()

        Catch ex As Exception
            Log_Info = False
        End Try

        Log_Info = True

    End Function

    
    
    
End Class

* 예제 결과

 

결과 화면

[C#] Log File - 로그 작성 예제

 

[C#] Log File - 로그 작성 예제

* 로그 파일 남기기 예제 ... 위 그림과 같이 리스트뷰 Columns 붉은 테두리 안에 있는 ... 버튼을 클릭하여 ColumnHeader 컬렉션 편집기를 열어 멤버를 추가 해 줍니다. 첫번째 열은 No. 에 해당하며 Log 갯수를..

kdsoft-zeros.tistory.com


https://kdsoft-zeros.tistory.com/34?category=846222 [삽질하는 개발자...]

 

[VBNET] File Create Delete Read Write Ex

* VBNET 파일 예제 Form1.vb Public Class Form1 Dim strCheckFolder As String = "" Dim strFileName As String = "Test.txt" Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventA..

kdsoft-zeros.tistory.com

 

반응형
반응형

* 폴더 및 파일 감시 예제...

 

메인화면

전체 소스 코드

Form1.vb

 

Public Class Form1

    Dim fsw As IO.FileSystemWatcher


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        fsw = New IO.FileSystemWatcher

        'VBNET 소스 코드 상에서 이벤트 등록...
        AddHandler fsw.Created, AddressOf fileSystemWatcher_Created
        AddHandler fsw.Deleted, AddressOf fileSystemWatcher_Deleted
        AddHandler fsw.Renamed, AddressOf fileSystemWatcher_Renamed
        AddHandler fsw.Changed, AddressOf fileSystemWatcher_Changed

        '크로스 스레드 예외 처리...
        CheckForIllegalCrossThreadCalls = False

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        Dim fbd As FolderBrowserDialog = New FolderBrowserDialog

        If (fbd.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            fsw.Path = fbd.SelectedPath
            label3.Text = fbd.SelectedPath
            '모든 파일 감시 ...
            'Ex) *.txt 모든 텍스트 파일 감시...
            fsw.Filter = "*.*"
            fsw.NotifyFilter = IO.NotifyFilters.DirectoryName Or IO.NotifyFilters.Size Or IO.NotifyFilters.FileName
            fsw.EnableRaisingEvents = True
        End If

    End Sub

    Private Sub fileSystemWatcher_Created(ByVal o As Object, ByVal e As IO.FileSystemEventArgs)

        '파일 및 폴더가 생성 되면 이벤트 발생...
        label5.Text = e.FullPath + ", " + e.Name + " Create Complete."
    End Sub

    Private Sub fileSystemWatcher_Deleted(ByVal o As Object, ByVal e As IO.FileSystemEventArgs)

        '파일 및 폴더가 삭제 되면 이벤트 발생...
        label5.Text = e.FullPath + ", " + e.Name + " Delete Complete."
    End Sub

    Private Sub fileSystemWatcher_Renamed(ByVal o As Object, ByVal e As IO.FileSystemEventArgs)

        '파일 및 폴더가 이름이 바뀌게 되면 이벤트 발생...
        label5.Text = e.FullPath + ", " + e.Name + " Change Complete"

    End Sub

    Private Sub fileSystemWatcher_Changed(ByVal o As Object, ByVal e As IO.FileSystemEventArgs)

        label5.Text = e.FullPath + ", " + e.Name + " Change Complete"

    End Sub

End Class

 

* 예제 결과

- 파일 크기가 변경 되거나 수정 되었을 경우

 

위와 같이 txt 파일이 7kb 이며 안에 내용이 수정 되었을 때 이벤트 발생

 

- 폴더가 생성 되거나 삭제 되었을 경우



* ↓↓↓ 아래의 C# 예제는 소스 코드 이벤트 등록이 아닌 컨트롤 사용 하는 방법

 

[C#] 파일 및 폴더 감시 (FileSystemWatcher)

 

[C#] 파일 및 폴더 감시 (FileSystemWatcher)

* 파일 및 폴더 감시 예제... Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; usin..

kdsoft-zeros.tistory.com

 

 

[VBNET] 크로스 스레드 (Cross Thread) 예제

 

[VBNET] 크로스 스레드 (Cross Thread) 예제

* 크로스 스레드 - 자신의 스레드가 아닌 다른 스레드가 그 컨트롤에 접근 했을 때 나는 오류 *해결 방법 예제 Form1.vb Public Class Form1 ' 스레드의 동작을 제어하는 메서드 ' Abort():강제 종료 ' Interrup..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 파일 복사 예제...

 

메인화면

전체 소스 코드

Form1.vb

 

Public Class Form1

    '첫번째 방법...
    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        If (ofd.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            label3.Text = ofd.FileName
        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        Dim strDestFolder As String = "C:\FileCopy\DEST1"
        Dim fi As System.IO.FileInfo = New System.IO.FileInfo(label3.Text)

        'fi.Name => 파일 이름 가져오기 즉 복사 할려는 폴더안에 원본 파일 이름과 같은 이름으로 복사 하기 위해...
        System.IO.File.Copy(label3.Text, strDestFolder + "\" + fi.Name)
        label4.Text = strDestFolder + "\" + fi.Name + " 복사 완료"

    End Sub
    '=================================================================================================================
    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        If (ofd.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            label5.Text = ofd.FileName
        End If
    End Sub

    Private Sub button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button4.Click
        Dim strDestFolder As String = "C:\FileCopy\DEST2"
        Dim fi As System.IO.FileInfo = New System.IO.FileInfo(label5.Text)

        '버퍼 크기...
        Dim iBufferSize As Integer = 1024
        Dim lSize As Long = 0
        '파일 전체 크기...
        Dim lTotalSize As Long = fi.Length

        '버퍼 사이즈 만큼 바이트 배열 선언
        Dim bTmp(iBufferSize) As Byte

        pbValue.Minimum = 0
        pbValue.Maximum = Convert.ToInt32(lTotalSize)

        Dim fsRead As System.IO.FileStream = New System.IO.FileStream(label5.Text, IO.FileMode.Open)
        Dim fsWrite As System.IO.FileStream = New System.IO.FileStream(strDestFolder + "\" + fi.Name, IO.FileMode.Create)

        While (lSize < lTotalSize)

            Dim iLen As Integer = fsRead.Read(bTmp, 0, bTmp.Length)
            lSize += iLen
            fsWrite.Write(bTmp, 0, iLen)

            '진행 상태
            pbValue.Value = Convert.ToInt32(lSize)

        End While

        '파일 연결 해제
        pbValue.Value = pbValue.Maximum
        fsWrite.Flush()
        fsWrite.Close()
        fsRead.Close()

        label7.Text = strDestFolder + "\" + fi.Name + " 복사 완료"

    End Sub
End Class

* 첫번째 방법

 

 

* 두번째 방법

 

 

 

[VBNET] 폴더 및 파일, 드라이브 사이즈 (Size) 구하기

 

[VBNET] 폴더 및 파일, 드라이브 사이즈 (Size) 구하기

* 폴더 및 파일, 드라이브 목록 및 사이즈 구하기 예제 File Open 버튼 : 파일 대화 상자가 뜨게 되며, 해당 파일 선택 시 위 그림과 같이 파일의 위치 와 사이즈가 표시 됩니다. 다만 사이즈 표시는 기본 Byte..

kdsoft-zeros.tistory.com

[VBNET] File Create Delete Read Write Ex

 

[VBNET] File Create Delete Read Write Ex

* VBNET 파일 예제 Form1.vb Public Class Form1 Dim strCheckFolder As String = "" Dim strFileName As String = "Test.txt" Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventA..

kdsoft-zeros.tistory.com

 

반응형

+ Recent posts