Gå til innhold

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


Anbefalte innlegg

Videoannonse
Annonse
Skrevet (endret)
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
Skrevet

Åja! Selvfølgelig! For dette er jo ikke det samme som jeg brukte tidligere, som gav hele stien til filen! :) Da er jeg med! Takk! Og det fungerer utmerket også!

Skrevet
jeg tenkte noe slikt som

C:\...\...\...\...\Hei.txt

9071795[/snapback]

 

Samma her :)

 

 

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

9071823[/snapback]

 

Gledesdreper :tease:

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet (endret)

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
Skrevet

Oj! Det var ikke værre nei? Dreiv på og skrev om den koden aadnk har kommet opp med. Bare satte den til å slette istedet. Men har en viss følelse av at det ikke hadde blitt noe særlig...

 

 

Takk! Skal testes!

Skrevet

Det funket ikke... Det kom en error om at "Mappen er ikke tom"

Ja, tilog med på norsk?! Hadde vært kjipt om den hadde tatt hele C:/ ja.. :p

Skrevet (endret)

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
Skrevet (endret)

I likhet med rd, må alle filer i mappen slettes før mappen kan slettes.

For å unngå dette, sett andre parameter til true (recursive)

edit: for treg :(

Endret av GeirGrusom
Skrevet

Neida, tenk litt selv da :p

 

 

Finn antall filer og mapper på rota. Så bruker du enkel matematikk til å regne det ut :)

 

Det klarer du selv :)

Skrevet (endret)

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
Skrevet

Okay! Da skal jeg se hva jeg får til! :)

 

Skal jeg lage en ny funksjon som er ganske lik ze5400's, eller legge til noe i den gamle? Må bare vite dette.. :p

Skrevet

Det gjør du som du vil med. Du trenger jo bare liste, telle og slette, så noe særlig avansert er ikke nødvendig. Jeg ville lagd en ny kode _helt_ fra bunnen av om jeg var deg, så lærer du litt.

Skrevet (endret)

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

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...