Avatar billede bernhof Nybegynder
13. juli 2006 - 11:44 Der er 4 kommentarer og
1 løsning

System.IO.FileInfo.MoveTo

.NET 1.1:

Jeg har en applikation, som kopierer nogle filer rundt på harddisken. Programmet kommer ofte i den situation, at der ikke er plads til at kopiere en fil på fx et par gigabyte. I denne situation forsøger programmet derfor blot at flytte filen med System.IO.FileInfo.MoveTo metoden. Men her sker der en exception, som fortæller, at der ikke er plads nok på harddisken!

Umiddelbart giver det jo ingen mening, da filen flyttes, og derved ikke optager yderligere plads. Hvis man står i Windows Explorer, og flytter filen manuelt, sker det uden problemer. Måden hvorpå filen flyttes i .NET er altså anderledes, og fungerer ikke efter hensigten.

Er der nogen der kan hjælpe mig med en løsning på problemet og evt. forklare hvad problemet består i?
Avatar billede bernhof Nybegynder
13. juli 2006 - 13:11 #1
Det viser sig, at problemet kun opstår, hvis man kopierer fra et share til et andet share (også selvom de er på samme harddisk) .. Lukker.
Avatar billede bernhof Nybegynder
13. juli 2006 - 13:11 #2
Ehm, lukker :)
Avatar billede md_craig Nybegynder
13. juli 2006 - 13:31 #3
Jow det giver faktisk fint mening, du kan ikke bare flytte en fil på den måde du beskriver det...

Når du bruger move gør den bare det at den Kopiere filen til den nye lokation, derefter sletter den automatisk den gamle...

Dette kan du aldrig rigtig undgå... men du kan arbejde med problemet...
en mulighed er at kopiere filen ind i hukommelsen, så slette den på disk og skrive den ud fra hukommelsen... Det er dog samme princip bortsef fra at destinationen ikke er fx:

c:\ til d:\... men derimod c:\ til ram, derefter ram til d:\...

Den første går selfølgelig også igennem ram, men ikke på samme måde...

En anden mulighed er at chunke filen op, hvis du har X antal diske med lidt plads på... hvis det er fra c:\mappeA til c:\mappeB kan denne metode benyttes... det er heller ikke sikkert du behøver at chunke den op, kan være den kan være helt på D:\... så kan du bruge D:\ som mellem lager... dog troede jeg egentlig kun windows flytede på indexeringen af filer inden for disken selv, og ikke selve filen...
Avatar billede mcgoat Nybegynder
14. juli 2006 - 09:40 #4
Når man flytter(move) en fil fra et sted på et drev til et andet sted på samme drev skulle det virke fint, så laver den bare filpointeren om. Men hvis du flytter til et andet drev eller share så kopierer den og derefter sletter.

Det er ihvertfald de erfaringer jeg har erhvervet mig :)
Avatar billede bernhof Nybegynder
11. august 2006 - 14:41 #5
mcgoat > ja, det var præcis den erfaring jeg også gjorde mig. Problemet er, hvis man flytter en fil fra ét sted til et andet på samme disk, men gør det via shares ("\\mycomputer\share1" til "\\mycomputer\share2"), kan den ikke finde ud af blot at ændre filpointeren, men forsøger i stedet at kopiere/slette.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester