Побайтовое копирование файлов

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Master_Zolan
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 63
Зарегистрирован: 07.10.2008 (Вт) 12:11
Откуда: г. Ростов-на-Дону

Побайтовое копирование файлов

Сообщение Master_Zolan » 27.07.2009 (Пн) 15:26

Пытаюсь скопировать файл с адресом f1n в f2n
Но получаются - битые архивы, дополнительные байты откудато.. и т.д.... что можно сделать?
Необходима именно побайтовая обработка, кусками естественно, а то медленно....

Код: Выделить всё
'Копирование
        Dim f1n = TextBox1.Text
        Dim f2n = "C:\test.rrr"
        Dim k As Long
        Dim bytesread As Integer
        Dim blocksize = 100
       Dim bytes(blocksize) As Byte
       Dim testf = New System.IO.BinaryReader(System.IO.File.Open(f1n, IO.FileMode.Open, IO.FileAccess.Read))
       Dim testf1 = New System.IO.BinaryWriter(System.IO.File.Open(f2n, IO.FileMode.Create, IO.FileAccess.Write))
        bytesread = testf.Read(bytes, 0, blocksize)
        While bytesread > 0
            For i = 0 To blocksize
                testf1.Write(bytes(i))
            Next
            Array.Clear(bytes, 0, blocksize)
            bytesread = testf.Read(bytes, 0, blocksize)
        End While

        testf.Close()
        testf1.Close()
...или как-то так...

Master_Zolan
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 63
Зарегистрирован: 07.10.2008 (Вт) 12:11
Откуда: г. Ростов-на-Дону

Re: Побайтовое копирование файлов

Сообщение Master_Zolan » 27.07.2009 (Пн) 16:28

Все, разобрался- вроде бы так
Код: Выделить всё
   'Копирование
        Dim f1n = TextBox1.Text
        Dim f2n = "C:\rrr.rrr"
        Dim k As Long
        Dim bytesread As Integer
        Dim blocksize = 10
        Dim bytes(blocksize - 1) As Byte
        Dim ascii = System.Text.Encoding.GetEncoding(0)
        Dim testf = New System.IO.BinaryReader(System.IO.File.Open(f1n, IO.FileMode.Open, IO.FileAccess.Read), ascii)
        Dim testf1 = New System.IO.BinaryWriter(System.IO.File.Open(f2n, IO.FileMode.Create, IO.FileAccess.Write), ascii)
        bytesread = testf.Read(bytes, 0, blocksize)
        While bytesread > 0
            If bytesread = blocksize Then
                testf1.Write(bytes)
            ElseIf bytesread < blocksize Then
                For i = 0 To bytesread - 1
                    testf1.Write(bytes(i))
                Next
            End If

            Array.Clear(bytes, 0, blocksize)
            bytesread = testf.Read(bytes, 0, blocksize)
        End While
        testf.Close()
        testf1.Close()
...или как-то так...


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37

    TopList