VB.Net/Data Structure/Dictionary

Материал из VB Эксперт
Перейти к: навигация, поиск

Check if a directory does not exist, create a directory

<source lang="vbnet"> Imports System.IO Module Module1

   Sub Main()
       Try
           If (Directory.Exists("D:\test01")) Then
               Console.WriteLine("D:\test01 already exists")
           Else
               Directory.CreateDirectory("C:\test01")
           End If
           Console.WriteLine("Directories created")
       Catch E As Exception
           Console.WriteLine("Error creating directory")
           Console.WriteLine("Error: {0}", E.Message)
       End Try
   End Sub

End Module


      </source>


Create directory with drive letter and without drive letter

<source lang="vbnet"> Imports System.IO Module Module1

   Sub Main()
       Console.WriteLine("Creating directories...")
       Directory.CreateDirectory("D:\test01")
       Directory.CreateDirectory("D:\Temp\Sample02")
       Directory.CreateDirectory("Sample03")
       Console.WriteLine("Directories created")
   End Sub

End Module


      </source>


Delete a Directory

<source lang="vbnet"> Imports System.IO Module Module1

   Sub Main()
       Try
           Directory.Delete("C:\Sample01", True)
       Catch E As Exception
           Console.WriteLine("Error deleting directory C:\Sample01")
           Console.WriteLine("Error {0}", E.Message)
       End Try
   End Sub

End Module


      </source>


Get and set current working directory

<source lang="vbnet"> Imports System.IO Module Module1

   Sub Main()
       Console.WriteLine("Current directory is {0}", Directory.GetCurrentDirectory())
       Directory.SetCurrentDirectory("C:\")
       Console.WriteLine("Current directory is {0}", Directory.GetCurrentDirectory())
   End Sub

End Module


      </source>


Get parent directory

<source lang="vbnet"> Imports System.IO Module Module1

   Sub Main()
       Dim Current As String
       Dim Parent As DirectoryInfo
       Try
           Current = Directory.GetCurrentDirectory()
           Parent = Directory.GetParent(Current)
           Console.WriteLine("Current directory {0}", Current)
           Console.WriteLine("Parent directory {0}", Parent.FullName)
       Catch E As Exception
           Console.WriteLine("Error determining parent directory")
           Console.WriteLine(E.Message)
       End Try
   End Sub

End Module


      </source>


List all Directories under a directory

<source lang="vbnet"> Imports System.IO Module Module1

   Sub Main()
       Dim Root As New DirectoryInfo("C:\")
       Dim Files As FileInfo() = Root.GetFiles("*.*")
       Dim Dirs As DirectoryInfo() = Root.GetDirectories("*.*")
       Console.WriteLine("Root Directories")
       Dim DirectoryName As DirectoryInfo
       For Each DirectoryName In Dirs
           Try
               Console.Write(DirectoryName.FullName)
               Console.Write(" contains {0} files ", DirectoryName.GetFiles().Length)
               Console.WriteLine(" and {0} subdirectories ", DirectoryName.GetDirectories().Length)
           Catch E As Exception
               Console.WriteLine("Error accessing")
           End Try
       Next
   End Sub

End Module


      </source>


List all files under a directory

<source lang="vbnet"> Imports System.IO Module Module1

   Sub Main()
       Dim Root As New DirectoryInfo("C:\")
       Dim Files As FileInfo() = Root.GetFiles("*.*")
       Dim Dirs As DirectoryInfo() = Root.GetDirectories("*.*")
       Console.WriteLine("Root Files")
       Dim Filename As FileInfo
       For Each Filename In Files
           Try
               Console.Write(Filename.FullName)
               Console.Write(" Size: {0} bytes", Filename.Length)
               Console.WriteLine(" Last use: {0}", Filename.LastAccessTime)
           Catch E As Exception
               Console.WriteLine("Error accessing File")
           End Try
       Next
   End Sub

End Module


      </source>


Make Dictionary based on your own Object

<source lang="vbnet"> Imports System Imports System.Collections Imports System.Collections.Generic Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim dict As New StudentDictionary
       dict.Add("113-11-1111", New Student("A", "a"))
       dict.Add("222-22-2222", New Student("B", "b"))
       dict.Add("333-33-3333", New Student("C", "c"))
       dict.Add("444-44-4444", New Student("D", "d"))
       Dim student As Student = dict.Item("365-76-5476")
       Console.WriteLine(student.ToString)
   End Sub

End Class

Public Class Student

   Private m_FirstName As String
   Private m_LastName As String
   Public Sub New(ByVal first_name As String, ByVal last_name As String)
       m_FirstName = first_name
       m_LastName = last_name
   End Sub
   Public Overrides Function ToString() As String
       Return m_FirstName & " " & m_LastName
   End Function

End Class Public Class StudentDictionary

   Inherits System.Collections.DictionaryBase
   " Add a Dictionary entry.
   Public Sub Add(ByVal new_key As String, ByVal new_student As Student)
       Dictionary.Add(new_key, new_student)
   End Sub
   " Return an object with the given key.
   Default Public Property Item(ByVal key As String) As Student
       Get
           Return DirectCast(Dictionary.Item(key), Student)
       End Get
       Set(ByVal Value As Student)
           Dictionary.Item(key) = Value
       End Set
   End Property
   " Return a collection containing the Dictionary"s keys.
   Public ReadOnly Property Keys() As ICollection
       Get
           Return Dictionary.Keys
       End Get
   End Property
   " Return a collection containing the Dictionary"s values.
   Public ReadOnly Property Values() As ICollection
       Get
           Return Dictionary.Values
       End Get
   End Property
   " Return True if the Dictionary contains this Student.
   Public Function Contains(ByVal key As String) As Boolean
       Return Dictionary.Contains(key)
   End Function
   " Remove this entry.
   Public Sub Remove(ByVal key As String)
       Dictionary.Remove(key)
   End Sub

End Class

      </source>


Your own Generic List Dictionary

<source lang="vbnet"> Imports System Imports System.Collections Imports System.Collections.Generic Imports System.Collections.Specialized

Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim dict As New StudentListDictionary
       dict.Add("111-11-1111", New Student("A", "A"))
       dict.Add("333-22-3333", New Student("B", "B"))
       dict.Add("444-44-4444", New Student("C", "C"))
       dict.Add("555-55-5555", New Student("D", "D"))
       Dim student As Student = dict.Item("111-11-1111")
       Console.WriteLine(student.ToString)
   End Sub

End Class

Public Class Student

   Private m_FirstName As String
   Private m_LastName As String
   Public Sub New(ByVal first_name As String, ByVal last_name As String)
       m_FirstName = first_name
       m_LastName = last_name
   End Sub
   Public Overrides Function ToString() As String
       Return m_FirstName & " " & m_LastName
   End Function

End Class Public Class StudentListDictionary

   Inherits ListDictionary
   " Add a Dictionary entry.
   Public Shadows Sub Add(ByVal new_key As String, ByVal new_student As Student)
       MyBase.Add(new_key, new_student)
   End Sub
   " Return an object with the given key.
   Default Public Shadows Property Item(ByVal key As String) As Student
       Get
           Return DirectCast(MyBase.Item(key), Student)
       End Get
       Set(ByVal Value As Student)
           MyBase.Item(key) = Value
       End Set
   End Property
   " Return True if the Dictionary contains this Student.
   Public Shadows Function Contains(ByVal key As String) As Boolean
       Return MyBase.Contains(key)
   End Function
   " Remove this entry.
   Public Shadows Sub Remove(ByVal key As String)
       MyBase.Remove(key)
   End Sub

End Class

      </source>