Gå til innhold

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


Anbefalte innlegg

Videoannonse
Annonse
Ah, en smule enklere!

 

Jeg prøvde meg på denne String.Split, men vanskelig å finne ut noe om den når IDE'n min ikke sier noe om den engang. Men jeg tviler på at jeg hadde fått den til uansett... :nei:

 

EDIT: Oj! Fungerer perfecto også! Nydelig! Nå må jeg bare sette meg ned og se om jeg forstår hva den koden egentlig gjør... :roll:

 

IO.Path.GetPathRoot(File) & "...\" & IO.Path.GetFileName(File)

Hvordan kan egentlig denne kutte ned på filbanen da? Jeg skjønner ikke helt det. Hvorfor blir det ikke bare "hele filbanen + "...\" + "filnavn"?

9071685[/snapback]

 

Fordi IO.Path.GetPathRoot får (get) PathRoot, som er disken (feks "C:\"), mens IO.Path.GetFileName får (get) FileName, som betyr filnavn. Altså sitter vi med disk, "..." og filnavn.

 

Skjønner hva du tenkte, Geir, men det bryr vi oss ikke om i første omgang, tror jeg ;)

Endret av Degeim
Lenke til kommentar

Jeg skrev likegodt en kode til det jeg mente.

 

Kan sikkert gjøres på mer effektive måter, men skitt au :)

 

 

Klikk for å se/fjerne innholdet nedenfor
Module Main

 

    Sub Main()

        ' Opprett variablen som inneholder banen, og gi den en verdi

        Dim Path As String = "C:\Programmer\Lol\Lol.exe"

        ' Opprett variablen som skal inneholde den nye stringen

        Dim NewString As String = ""

        ' Opprett ett array som skal holde hver bit av banen. Fyll TMP med bitene

        Dim TMP() As String = Path.Split("\")

 

        ' Opprett en teller som skal holde styr på om det er stastjonsbokstaven, fila eller banen vi håndtere

        Dim Counter As Integer = 0

 

        ' Looper gjennon TMP, oppretter og setter Str til

        For Each Str As String In TMP

 

            ' Sjekker om vi er på stasjonsbokstaven eller fila

            If Counter = 0 Or Counter = (TMP.Length - 1) Then

 

                ' Legger til \ og Str til NewString

                NewString += "\" + Str

 

                ' Vi er på banen

            Else

 

                ' Legger til \.. til NewString

                NewString += "\.."

            End If

 

            ' Legg til 1 på telleren vår

            Counter += 1

 

            ' Gjennta loopen

        Next

 

        ' Fjern "\" som har havnet i begynnelsen av NewString

        NewString = NewString.Remove(0, 1)

 

        ' Skriv NewString til sjermen

        Console.WriteLine(NewString)

 

        ' Vent med å avslutt til vi trykker en tast

        Console.ReadKey()

 

    End Sub

 

End Module

 

 

Og siden jeg regner med du ikke hadde spurt om det var greit, dersom du skulle komme til å COPY/PASTE dette AnaXyd, det er greit :tease:

Endret av ze5400
Lenke til kommentar

Hehe.. :p Okay.. :D Jeg får se hvilken funksjon jeg får bruk for! :) Takk uansett!

 

Men, hvis jeg da skal slette alle filene på f.eks stasjon G:/. Kan jeg bruke noe av den samme koden, bare få den til å slette istedet? Er det mulig?

Endret av AnaXyd
Lenke til kommentar

Slik?

 

        Dim Folders() As String = System.IO.Directory.GetDirectories("G:\")

        Dim Files() As String = System.IO.Directory.GetFiles("G:\")

 

        For Each Folder As String In Folders

            System.IO.Directory.Delete(Folder)

        Next

 

        For Each File As String In Files

            System.IO.File.Delete(File)

        Next

Endret av ze5400
Lenke til kommentar

Bytt om rekkefølgen. Slett filene først, så mappene.

 

EDIT: Dersom du gjør som ze5400 sier under, tipper jeg du får feilmeldingen "File does not exist" ved sletting av alle filene. Så husk å fjerne loopen for sletting av filer dersom du gjør det slik.

 

Kanskje går det da an å enkelt og greit skrive System.IO.Directory.Delete("G:\",True)? Jeg har av åpenbare grunner ikke testet den koden.

Endret av Degeim
Lenke til kommentar

Da foreslår jeg at du forsøker litt selv. Du vet hvordan du kan lage liste over alle filene (du bør bruke den første metoden, med mitt forslag til ombytting av rekkefølgen), og dermed også hvordan du kan telle dem. Og du vet hvordan du kan slette dem, og da skulle ikke progressbar være noe problem om du prøver litt.

 

EDIT: Se bare hvordan både jeg og ze5400 er enige ;)

Endret av Degeim
Lenke til kommentar

Er jeg på sporet til noe her da?:

 

Dim Folders() As String = System.IO.Directory.GetDirectories(My.Settings.PSP_DriveLetter)

        Dim Files() As String = System.IO.Directory.GetFiles(My.Settings.PSP_DriveLetter)

        Dim count As Integer = 0

        For Each File As String In Files

            count += 1

        Next

    End Sub

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