Gå til innhold

Hjelp til System.IO.File.Copy..!


Anbefalte innlegg

Hei igjen! :)

 

Lurer på om det er mulig å legge til en progressbar funksjon inne i den rekursive funksjonen? Og er det mulig å legge til en Textbox.text = "TEKST" på slutten når den er ferdig?

 

Altså, når den er ferdig med å kopiere en fil gjør den dette:

ProgressBar1.Value = ProgressBar1.Value + 1

 

Men, på en eller annen måte må man jo finne ut hvor stor progressbaren skal være da, slik at det ikke blir for mye eller for lite.

Progressbar1.Maximum = ?

 

Kan noen hjelpe meg? :)

Lenke til kommentar
Videoannonse
Annonse

Først må du finne ut av hvor mange filer du skal kopiere, evt totalt antall bytes. Deretter må du holde styr på hvor lang i prosessen du har kommet i kopieringa og rapportere om progress deretter.

 

Hvis du bruker en BackgroundWorker, så har denne en ReportProgress event som du kan bruke. For prosentvis progress:

 

(antall_filer_kopiert_hittil / antall_filer_totalt) * 100

Lenke til kommentar
ProgressBar1.Maximum = 1 + ProgressBar1.Value + 1

hva faen?

du kunne like godt skrevet ProgressBar1.Value + 2

Sett den til 100, og bruk prosent.

9058609[/snapback]

 

Er du sikker?

 

Her er koden:

 

' Recursively copy all files and subdirectories from the

    ' specified source to the specified destination.

    Private Sub RecursiveCopyFiles( _

    ByVal sourceDir As String, _

    ByVal destDir As String, _

    ByVal fRecursive As Boolean, ByVal overWrite As Boolean)

 

        Dim i As Integer

        Dim posSep As Integer

        Dim sDir As String

        Dim aDirs() As String

        Dim sFile As String

        Dim aFiles() As String

 

        ' Add trailing separators to the supplied paths if they don't exist.

        If Not sourceDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then

            sourceDir &= System.IO.Path.DirectorySeparatorChar

        End If

 

        If Not destDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then

            destDir &= System.IO.Path.DirectorySeparatorChar

        End If

 

        ' Recursive switch to continue drilling down into dir structure.

        If fRecursive Then

 

            ' Get a list of directories from the current parent.

            aDirs = System.IO.Directory.GetDirectories(sourceDir)

 

            For i = 0 To aDirs.GetUpperBound(0)

                ' Get the position of the last separator in the current path.

                posSep = aDirs(i).LastIndexOf("\")

 

                ' Get the path of the source directory.

                sDir = aDirs(i).Substring((posSep + 1), aDirs(i).Length - (posSep + 1))

 

                ' Create the new directory in the destination directory.

                System.IO.Directory.CreateDirectory(destDir + sDir)

 

                ' Since we are in recursive mode, copy the children also

                RecursiveCopyFiles(aDirs(i), (destDir + sDir), fRecursive, overWrite)

            Next

 

        End If

 

        ' Get the files from the current parent.

        aFiles = System.IO.Directory.GetFiles(sourceDir)

 

        ' Copy all files.

        For i = 0 To aFiles.GetUpperBound(0)

 

            ' Get the position of the trailing separator.

            posSep = aFiles(i).LastIndexOf("\")

 

            ' Get the full path of the source file.

            sFile = aFiles(i).Substring((posSep + 1), aFiles(i).Length - (posSep + 1))

            Try

                ' Copy the file.

                System.IO.File.Copy(aFiles(i), destDir + sFile, False)

                ProgressBar1.Maximum = 1 + ProgressBar1.Value + 1

                ProgressBar1.Value = ProgressBar1.Value + 1

                Label4.Text = ("Copied " & sFile & " to " & destDir)

            Catch ex As Exception

                If overWrite = False Then

                    Label4.Text = (ex.Message)

                    Label4.Text = ("Skipping..." & ex.Message)

                Else

                    System.IO.File.Copy(aFiles(i), destDir + sFile, True)

                    Label4.Text = ("Overwriting old " & sFile & " in " & destDir)

                End If

 

            End Try

        Next

    End Sub

 

 

Jaja, jeg får prøvde den Backgroundworkeren da..

Lenke til kommentar

Det gikk 9 minutter fra du fikk vite om BackgroundWorker til neste innlegg hvor du spør om hvordan du skal bruke den!

 

Jeg nekter å tro at du har gjordt noe som helst forsøk på å finne ut av dette selv. Og vi er IKKE her for å programmere hele programmet ditt for deg! GOOGLE!!

Endret av jorn79
Lenke til kommentar

edit: :thumbs:

 

Det du gjør med progressbaren vil virke, men det vil gi helt feil resultat, da den vil begynne med å fylle 1/3 av progressbaren, og forskjellen bare vil bli mindre og mindre, og vil egentlig være helt uten forhold til det faktiske resultatet du prøver å vise.

 

Backgroundworkeren skal ikke vise noe data, den skal kun behandle det.

Endret av GeirGrusom
Lenke til kommentar

Hvis du bare er her for å klage og surre etter meg, så kan du finne et annet sted. Faktisk er dette forumet til å hjelpe folk, ikke bare si: Google er din venn.

 

Jeg tror egentlig programmeringsavdelingen er den desidert dårligste delen til å her på forumet! Og kvaliteten gjør det ikke noe bedre med deg jorn79.

 

Har dere tatt en titt på andre avdelinger her? Det er mange folk som gidder å bruke tiden sin på å hjelpe! Det er veldig mange av dem her også! :) Dere veit selv hvem jeg mener...! :)

Det er ikke det. Men det er noen som gjør kvaliteten dårligere..

 

 

Herregud, for en oppførsel... Er det mulig...

 

EDIT: Forresten, istedet for å spamme ned hele forumet med klaging, kan du heller sende meg en PM. Da slipper alle andre å se på alt sytet ditt. Takk

Endret av AnaXyd
Lenke til kommentar
edit: :thumbs:

 

Det du gjør med progressbaren vil virke, men det vil gi helt feil resultat, da den vil begynne med å fylle 1/3 av progressbaren, og forskjellen bare vil bli mindre og mindre, og vil egentlig være helt uten forhold til det faktiske resultatet du prøver å vise.

 

Backgroundworkeren skal ikke vise noe data, den skal kun behandle det.

9058796[/snapback]

Så jeg skal ikke sette den til å gjøre noe altså? Bare bruke den til progressbar liksom? :) Takk for svar!

Lenke til kommentar
Herregud, for en oppførsel... Er det mulig...

9058801[/snapback]

 

Jeg er helt enig. Det er ekstremt dårlig oppførsel å komme hit og misbruke andre sin verdifulle tid når man ikke har gjordt det minste forsøk på å finne ut av problemet selv!

Lenke til kommentar

AnaXyd: j0rn gjør nok TEMMELIG mye mer for kvaliteten her på forumet enn det du gjør. Han er en person som kan mye, og som kan være en ressurs, som flere andre her også.

 

Det er sånne som deg, som ikek GIDDER å prøve en DRITT selv, men som forventer at alle andre skal skrive masse kode til deg, som gjør noe med kvaliteten her.

 

Det er noe som heter "hjelp til selvhjelp". Med andre ord, kan vi peke deg i riktig retning, men vi bærer deg faen ikke hele veien.

Lenke til kommentar
Vi prøver å hjelpe, men det virker ikke som om du er mottakelig for det, det vi prøver å si, er at du burde prøve å få det til å fungere selv, før du poster her.

 

Vi vil ikke lage programmet for deg, men vi vil gjerne hjelpe.

9058812[/snapback]

Jeg har faktisk testet alt. Før jeg spurte! Var innom MSDN, og smalt inn noen koder. Men det ble rett og slett for heavy, for det var jo flere sider. Og jeg veit jo ikke hva halvparten gjør engang. Derfor spurte jeg spm mitt!

Lenke til kommentar
Jeg har faktisk testet alt. Før jeg spurte! Var innom MSDN, og smalt inn noen koder. Men det ble rett og slett for heavy, for det var jo flere sider. Og jeg veit jo ikke hva halvparten gjør engang. Derfor spurte jeg spm mitt!

9058839[/snapback]

 

 

Hvis du mener at 9 minutter holder så kan du like gjerne slutte å programmere...

 

Det samme gjelder hvis du ikke engang klarer å søke etter "backgroundworker tutorial vb.net" på google.

 

Og når du har gjordt DET er du velkommen hit for å spørre om ting du lurer på.

Endret av jorn79
Lenke til kommentar

Men har dere ikke skjønt at der er en del enklere å spørre her da? Jeg ble pekt i en retning mot backgroundworkeren ja.. Men det er jo ganske enkelt å svare på om jeg skal bruke den til å kjøre hele kopieringskoden, eller ikke?

 

 

GeirGrusom gjorde jo det, og det er jo bra..:)

 

Men det er noen andre her som bare venter på at jeg skal spørre ett riktig spm. til man kan bare fyre av og syte til meg. Jeg skjønner jo at dere ikke gidder å skrive hele greia for meg, og det er noe dere heller ikke har gjort! LANGT ifra! Men dere hjelper meg på vei! :)

Og ja, jeg har vært mye på MSDN, og skaffet mye selv derfra. ;)

 

Men å surve og klage sånn syntes jeg er unøvdendig. Kan vi ikke bare kjøre inn en fred, så skal jeg passe meg for de spm. dere blir så irritert over..?

Endret av AnaXyd
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...