Gå til innhold

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


Anbefalte innlegg

Valgte å redigere om denne fra tidligere spm. til nytt slik at jeg sparer litt for emner inne her...

 

 

 

Saken er at jeg har noen filer som skal kopieres til ett sted til et annet.

Jeg har laget en mappe i prosjektet mitt (ved alle formene), der alle filene ligger.

 

Men jeg finner ikke ut hvordan jeg skal få kopiert akkurat fra den mappen? Har prøvd My., men finner den ikke...

 

Legger ved et bilde:

post-91181-1183934044_thumb.jpg

 

 

Kan noen hjelpe meg? :)

Endret av AnaXyd
Lenke til kommentar
Videoannonse
Annonse
Valgte å redigere om denne fra tidligere spm. til nytt slik at jeg sparer litt for emner inne her...

9021714[/snapback]

 

Noe av poenget med forumet er at andre skal kunne søke og se på eldre saker som har blitt diskutert. Lag nye innlegg i fremtiden du....

Lenke til kommentar
Valgte å redigere om denne fra tidligere spm. til nytt slik at jeg sparer litt for emner inne her...

9021714[/snapback]

 

Noe av poenget med forumet er at andre skal kunne søke og se på eldre saker som har blitt diskutert. Lag nye innlegg i fremtiden du....

9040849[/snapback]

Det var ingen grunn til å ta vare på det som stod her, ikke for noen... Bare jeg som ikke var nøye nok! :)

 

Uansett, takk for hjelpen! Skal teste om det funker nå! :D

Lenke til kommentar

Jeg ser at System.IO.File.Copy fungerer bare for å kopiere enkle filer til ett nytt sted. Det er greit. Men det hadde vært greit å kunne kopiere dem inn i en mappe, uten å dra med filnavnet?

 

 

Jeg kan jo gjøre det på en tungvin måte, men det er så mye jobb, og jeg føler at det finnes enklere veier?

 

Er det forresten mulig å kopiere alt innhold i en mappe(mapper, mappestruktur og filer) til en ny mappe?

Lenke til kommentar

Den var til hjelp ja! Tror nok den fungerer utmerket! Tusen takk!

 

Men, hvordan skal jeg få denne til å kjøre ved et button click?

 

Den ser jo slik ut:

 

' 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)

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

            Catch ex As Exception

                If overWrite = False Then

                    ToolStripStatusLabel1.Text = (ex.Message)

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

                Else

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

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

                End If

 

            End Try

        Next i

 

    End Sub

 

Men om jeg kopierer denne inn i en button click, skjer det konflikter... Hva må jeg gjøre..?

Endret av AnaXyd
Lenke til kommentar
Men om jeg kopierer denne inn i en button click, skjer det konflikter... Hva må jeg gjøre..?

9054289[/snapback]

Sukk. :hrm:

 

Du kan ikke lime inn en funksjon i en annen funksjon - denne må plasseres ETTER eller FØR, evt. i en annen modul/klasse. For å bruke funksjonen, må du kalle dem med de individuelle parametre den eksponerer:

RecursiveCopyFiles("C:\Kilde\", "C:\Destinasjon", True, True)
Endret av aadnk
Lenke til kommentar

Slik da?

Klikk for å se/fjerne innholdet nedenfor
Public Class Form1

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        RecursiveCopyFiles("C:\Kilde\", "C:\Destinasjon", True, True)

    End Sub

 

    ' 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)

                'ToolStripStatusLabel1.Text = ("Copied " & sFile & " to " & destDir)

            Catch ex As Exception

                If overWrite = False Then

                    'ToolStripStatusLabel1.Text = (ex.Message)

                    'ToolStripStatusLabel1.Text = ("Skipping..." & ex.Message)

                Else

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

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

                End If

 

            End Try

        Next

 

    End Sub

 

End Class

Lenke til kommentar
Var det noe med greiene jeg hadde modifisert?

9055541[/snapback]

Nja, jeg måtte kommentere bort ToolStripStatusLabel1-linjene for å få koden til å kompilere.

 

Til neste gang bør du kanskje nevne feilmeldingen du får, om noen, i Error List. Selv fikk jeg Name 'ToolStripStatusLabel1' is not declared.

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...