Avatar billede kondi.koder Nybegynder
13. januar 2003 - 20:44 Der er 5 kommentarer og
1 løsning

Arbejde med filer

Hejsa !!

Jeg hare nu roddet med c++ et stykke tid, og kunne godt tænke mig at arbejde med filer. Pt. bruger jeg system, og derigennem dos-kommandoer.

Men er der ikke nogle indbygge libs til filhåndtering, ligesom der er fso til asp ?

Ok, linux og windows er forskellige, men så er der vel bare 2 libs ?

Er der ingen standard metode, hvis man f.eks. vil ha listet alle filerne i c:\sheeps\ ? Eller er der i det mindste ikke 2 standard metoder (en til windows og en til linux) ??

- kondi.koder :-)
Avatar billede soreno Praktikant
13. januar 2003 - 20:50 #1
Følgende kode viser lidt af det du ønsker.
Du kan modificere koden så den ikke sletter filerne, men f.eks. udskriver navnene på filerne (har jeg sat ind som kommentar).

#include <windows.h>
#include <stdio.h>
#include <string.h>

void deleteDir(char *dir)
{
    WIN32_FIND_DATA fd;
    HANDLE handle;
    char absPath[MAX_PATH];
    char tempPath[MAX_PATH];
    strcpy(tempPath, dir);
    strcat(tempPath, "\\*.*");

    handle = FindFirstFile(tempPath, &fd);

    if(handle != INVALID_HANDLE_VALUE)
    {
        do
        {
            strcpy(absPath, dir);
            strcat(absPath, "\\");
            strcat(absPath, fd.cFileName);

            if(0 == strcmp(fd.cFileName, ".") || 0 == strcmp(fd.cFileName, ".."))
            {
                NULL;
            }
            else if(fd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
            {
                printf("file is dir - recurse: %s\n", absPath);
                deleteDir(absPath);
                printf("\tdeleting dir %s\n", absPath);
                RemoveDirectory(absPath);
                //printf("dir: %s", absPath);
            }
            else
            {
                printf("\tdeleting file %s\n", absPath);
                DeleteFile(absPath);
                //printf("file: %s", absPath);
            }
        }while(FindNextFile(handle, &fd));
    }
    FindClose(handle);
}

int main(int argc, char **argv)
{
    deleteDir("c:\\test");
    return 0;
}
Avatar billede arne_v Ekspert
13. januar 2003 - 20:57 #2
Generelt for at arbejde med filer kan du vælge mellem:

1)  standard C (virker også i C++)

#include <stdio.h>

fopen, fwrite, fread, fclose etc.

2)  standard C++

#include <fstream>

ifstream, ofstream etc.

3)  diverse PC specifikke libraries (PC only)
Avatar billede arne_v Ekspert
13. januar 2003 - 20:59 #3
Lige netop det at finde alle filer i et directory er
ikke standardiseret.

På PC kan du bruge FindFirstFile/FindNextFile som i sørens
eksempel.

På Unix skal du kigge efter readdir funktionen.
Avatar billede stringbuffer Nybegynder
29. januar 2003 - 20:45 #4
lol, ikke for noget... men Linux er da oz PC styresystem... og dit påstand holder ikke
Avatar billede arne_v Ekspert
29. januar 2003 - 21:19 #5
:-)

Så erstat PC med DOS/Windows.
Avatar billede stringbuffer Nybegynder
30. januar 2003 - 02:36 #6
nej da, jeg vil hellere kn*ppe fluer ]:-)
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
Kurser inden for grundlæggende programmering

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