07. august 2005 - 15:59Der er
12 kommentarer og 1 løsning
hvorfor virker den copy kode ikke?
Hej. Jeg har lavet denne kode
Private Sub copy_file(ByVal fra As String, ByVal til As String) Dim read As Stream = New FileStream(fra, FileMode.Open, FileAccess.Read) Dim write As Stream = New FileStream(til, FileMode.Create, FileAccess.Write) Dim c As Integer Dim more As Boolean = True While more = True c = read.ReadByte If c > 0 Then write.WriteByte(CType(c, Byte)) Else more = False End If End While read.Close() write.Close() End Sub
Private Sub copy_dir(ByVal fra As String, ByVal til As String) Dim files As Array = IO.Directory.GetFiles(fra) For Each f As String In files If IO.Directory.Exists(til) = False Then IO.Directory.CreateDirectory(til) End If copy_file(f, til & "/" & f.Substring(fra.Length)) Next Dim dirs As Array = IO.Directory.GetDirectories(fra) For Each d As String In dirs copy_dir(d, til & "/" & d.Substring(fra.Length)) Next End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click copy_dir("c:\test", "c:\test2") End Sub
den copy'er en mappe og alle filerne i den. når man lige prøver koden af se det ud som om den virker, men det gør den ikke! alle de filer som programmet har copy'ert virker ikke og har ikke den rigtige størlse. jeg har test programmet på en mappe der fylder 293 MB. og den copy'et mappe kommer til at fylde 336 KB. hvad kan der være galt?????
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Iøvrigt vil du med 293 MB se en noget bedre performance med en application buffer.
Eksempel:
Sub Copy(fnm1 As String, fnm2 As String) Dim f1 As Stream = New FileStream(fnm1, FileMode.Open, FileAccess.Read) Dim f2 As Stream = new FileStream(fnm2, FileMode.Create, FileAccess.Write) Dim b(100000) As Byte Dim actual As Integer Dim more as boolean = True While (more) actual = f1.Read(b, 0, b.Length) If actual > 0 then f2.Write(b, 0, actual) Else more = False End If End While f1.Close f2.Close End Sub
Sub Copy(fnm1 As String, fnm2 As String) Dim f1 As Stream = New FileStream(fnm1, FileMode.Open, FileAccess.Read) Dim f2 As Stream = new FileStream(fnm2, FileMode.Create, FileAccess.Write) Dim b(100000) As Byte Dim actual As Integer Dim more as boolean = True While (more) actual = f1.Read(b, 0, b.Length) If actual > 0 then f2.Write(b, 0, actual) Else more = False End If End While f1.Close f2.Close End Sub
det er Java og er egentligt med et Windows versus VMS problem, men vi kommer forbi præcis den samme problem stilling med single byte read versus multi byte read (og Java koden er ikke så forskellig fra .NET koden)
okay tak. kan godt lidt java. så nok ikke det store problem. Men tak
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.