Fil flytte program

Tags:    c++

Hej.

Ville høre om nogen her der har prøvet at lave et programm som kan flytte filer.

eks. har jeg en mappe som jeg skal sorterest. og havde tænkt mig at flytte alle filerne der ender med eks (.txt) over i en anden mappe på en gang, eller med en funktion.

intil videre kan jeg kun flytte en enkel fil.

er lidt ny indenfor c++
så håber i kan hjælpe.


her er min kode intil videre:
blev lidt mærkelig da jeg kopi/pastede den.

//......................................................
#include <stdio.h>
#include <stdlib.h>

int main (void)

{
size_t len = 0 ;
const char a[] = "c:/?/?.txt" ; //flyttes fra
const char b[] = "d:/?/?.txt" ; // flyttes til
char buffer[BUFSIZ] = { '\0' } ;

FILE* in = fopen( a, "rb" ) ;
FILE* out = fopen( b, "wb" ) ;


if( in == NULL || out == NULL )
{
perror( "fejl med flytningen!!!" ) ;
in = out = 0 ;
}
else
{
while( (len = fread( buffer, BUFSIZ, 1, in)) > 0 ) {
fwrite( buffer, BUFSIZ, 1, out ) ;
}

fclose(in) ;
fclose(out) ;

if( remove(a) )
{
printf( "File blev flyttet. " ) ;
}
else
{
printf( "der skete en fejl!!!" ) ;
}
}
getchar();
}
//........................................................




Indlæg senest redigeret d. 19.06.2008 14:31 af Bruger #13903
2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Brug hellere følgende:

Fold kodeboks ind/udKode 


...ellers skal dine filers størrelse modulus BUFSIZ være lig med 0, og hvis ikke de er det får du ikke det hele med. Men du kan selvfølgelig også gøre det mere optimale og lade Windows stå for kopieringen med CopyFile funktionen:

Fold kodeboks ind/udKode 

Men nu siger du jo at du vil flytte filerne, og så er det uoptimalt at kopiere dem. Brug MoveFile i stedet:
Fold kodeboks ind/udKode 


Du kan iterere gennem listen af filer i et directory med FindFirstFile og FindNextFile funktionerne.

Et par links til dokumentation:
http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa364428(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa364413(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa363851(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa365239(VS.85).aspx



Takker for hjælpen.

Lidt sent, men better late then never;)

-J



t