13. juli 2006 - 11:44Der 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?
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...
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 :)
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.
Synes godt om
Ny brugerNybegynder
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.