Imports System.IO
Imports Microsoft.VisualBasic.FileIO

Module Module1

    Sub Main()

        ' Tworzymy duży plik testowy (100 MB)
        Dim TestFile As String = "c:\test.bin"
        Console.WriteLine("Tworzenie pliku...")
        Dim fs As FileStream = File.OpenWrite(TestFile)
        For i As Integer = 1 To 100000000
            fs.WriteByte(0)
        Next
        fs.Close()

        ' Tworzenie docelowego katalogu
        Console.WriteLine("Tworzenie katalogu...")
        Dim TargetDir As String = "c:\TestDir\"
        Dim TargetFile As String = Path.Combine(TargetDir, "test.bin")
        My.Computer.FileSystem.CreateDirectory(TargetDir)

        Console.WriteLine("Przenoszenie pliku...")
        ' Próbujemy przenieść plik
        ' Ustawiamy następujące parametry:
        '    showUI = UIOption.AllDialogs
        ' (pokazuje wszystkie okna dialogowe Windows, nie tylko te dotyczące błędów)
        '    onUserCancel = UICancelOption.ThrowException
        ' (generuje błąd, kiedy użytkownik kliknie przycisk Anuluj)
        Try
            My.Computer.FileSystem.MoveFile(TestFile, TargetFile, UIOption.AllDialogs, UICancelOption.ThrowException)
            Console.WriteLine("Plik przeniesiony")
        Catch Err As Exception
            Console.WriteLine("Operacja anulowana")

            ' Teraz usuwamy pierwotny plik
            My.Computer.FileSystem.DeleteFile(TestFile, UIOption.AllDialogs, RecycleOption.DeletePermanently)
        End Try

        Console.WriteLine("Naciśnij Enter, aby kontynuować.")
        Console.ReadLine()

        ' Usuwamy docelowy katalog
        ' Ustawiamy następujące parametry:
        '    recurse = True
        ' (ponieważ katalog zawiera pliki; w przeciwnym razie
        '  moglibyśmy usunąć tylko pusty katalog.)
        '    showUI = UIOption.AllDialogs
        ' (pokazuje okno dialogowe Windows z prośbą o potwierdzenie)
        '    sendToRecycleBin = false
        ' (usuwa plik w sposób trwały)
        '    onUserCancel = UICancelOption.DoNothing
        ' (pozwala użytkownikowi na anulowanie operacji)
        'My.Computer.FileSystem.DeleteDirectory(TargetDir, UIOption.AllDialogs, RecycleOption.SendToRecycleBin, UICancelOption.DoNothing)
        ' Inna metoda:
        My.Computer.FileSystem.DeleteDirectory(TargetDir, DeleteDirectoryOption.DeleteAllContents)
        Console.WriteLine("Usuwanie zakończone.")

        Console.ReadLine()

    End Sub


End Module
