begin process at 2010 02 10 08:16:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Utilisation de Fichiers txt en C++.net


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Utilisation de Fichiers txt en C++.net

samedi 19 juillet 2008 à 00:03:45 | Utilisation de Fichiers txt en C++.net

zebulon88

Bonjour à tous,

j'ai deux questions :
- J'utilise visual c++.net express 2008, et je cherche à lire uniquement les dernières lignes d'un fichier txt très volumineux sans lire l'intégralité du fichier. Comment faire?
- J'ai une multitude de fichiers txt de noms divers que je voudrais "concaténer" en un seul gros fichier txt.

Pourriez vous m'aider?

Merci beaucoup.
samedi 19 juillet 2008 à 13:05:23 | Re : Utilisation de Fichiers txt en C++.net

Neo_Fr

Membre Club
Salut,
En .Net j'en ai aucune idée mais en pure C ca donnerait ca:

DWORD __stdcall FileConcat(LPSTR lpszDstFile, LPSTR lpszSrcFile)
{
    HANDLE hSrcFile, hDstFile;
    DWORD dwRet = 1, dwFileSize, br, bw;
    BYTE* lpBuffer;
    hSrcFile = CreateFile(lpszSrcFile, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
    if(hSrcFile == INVALID_HANDLE_VALUE) return 1;
    hDstFile = CreateFile(lpszDstFile, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0);
    if(hDstFile == INVALID_HANDLE_VALUE) goto _Error;
    lpBuffer = (BYTE*) HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, 0x100000); // 1mo
    if(!lpBuffer) goto _Error;
    dwFileSize = GetFileSize(hDstFile, 0);
    SetFilePointer(hDstFile, dwFileSize, 0, FILE_BEGIN);
    while(1)
    {
        if(!ReadFile(hSrcFile, lpBuffer, 0x100000, &br, 0)) goto _Error;
        if(!br) break;
        if(!WriteFile(hDstFile, lpBuffer, br, &bw, 0)) goto _Error;
    }
    dwRet = 0;
   _Error:
    if(lpBuffer) HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, lpBuffer);
    if(hDstFile) CloseHandle(hDstFile);
    if(hSrcFile) CloseHandle(hSrcFile);
    return dwRet;
}

Neo_Fr
samedi 19 juillet 2008 à 16:20:35 | Re : Utilisation de Fichiers txt en C++.net

SAKingdom

Membre Club
BOOL FileConcat(LPSTR lpszDstFile, LPSTR lpszSrcFile)
{
    HANDLE hSrcFile, hDstFile;
    BOOL ret = FALSE;
    BYTE* lpBuffer;

    hSrcFile = CreateFile(lpszSrcFile, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
    if(hSrcFile != INVALID_HANDLE_VALUE) {
        hDstFile = CreateFile(lpszDstFile, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0);
        if(hDstFile != INVALID_HANDLE_VALUE) {
            if((lpBuffer = (BYTE*)HeapAlloc(GetProcessHeap(), 0, 0x100000))) { // 1mo
                SetFilePointer(hDstFile, 0, 0, FILE_END);

                while(1) {
                    DWORD dummy;

                    if(!ReadFile(hSrcFile, lpBuffer, 0x100000, &dummy, 0)) goto _Error;
                    if(!dummy) break;
                    if(!WriteFile(hDstFile, lpBuffer, dummy, &dummy, 0)) goto _Error;
                }

                ret = TRUE;

            _Error:
                HeapFree(GetProcessHeap(), 0, lpBuffer);
            }
            CloseHandle(hDstFile);
        }
        CloseHandle(hSrcFile);
    }

    return ret;
}

C++ (@++)

samedi 19 juillet 2008 à 17:29:26 | Re : Utilisation de Fichiers txt en C++.net

NairodDorian

1) Utilise la class StreamReader et utilise la méthode Seek.
2) Pour lister tous les fichiers Directory.GetFiles(); qui renvoi un tableau de String.
dimanche 20 juillet 2008 à 00:24:05 | Re : Utilisation de Fichiers txt en C++.net

zebulon88

ok merci,

j'ai rencontré plusieurs fois pour la méthode seek sur les forums mais je n'arrive pas à l'utiliser correctement.
L'aide de msdn donne :
FileStream^ fileStream = gcnew FileStream( fileName,FileMode::Create );
/.../
fileStream->Seek( 0, SeekOrigin::Begin );
le 0 spécifie le décalage,  s'agit-il du nombre de ligne de décalage? (je ne connais pas le nombre de ligne de mon fichier txt...)
SeekOrigin::Begin Spécifie le début, la fin ou la position actuelle en tant que point de référence pour origin.
Or j'ai besoin de récupérer les dix dernières lignes d'un fichier txt de nombre de ligne inconnu...

Pourriez vous m'aider avec un exemple ?

merci
dimanche 20 juillet 2008 à 10:21:44 | Re : Utilisation de Fichiers txt en C++.net

NairodDorian

Non le nombre qui indique le décalage est le nombre d'octets.
Comme je l'ai dis utilise plutôt la classe StreamReader puisque tu lis un fichier txt.
FileStream spécialisé dans la lecture d'octets.
StreamReader spécialisé dans la lecture de chaine de caractères.

dimanche 20 juillet 2008 à 16:16:09 | Re : Utilisation de Fichiers txt en C++.net

zebulon88

J'ai essayé un truc avec les stream reader mais rien n'est finalement écris dans mon fichier resultat.txt.

StreamReader^ sr =
gcnew StreamReader( "test.txt" );

StreamWriter^ sw = gcnew StreamWriter( "result.txt");

sr->BaseStream->Seek(-1024,SeekOrigin::End);

while (sr->Peek() >= 0){

sw->WriteLine(sr->ReadLine());

}

dimanche 20 juillet 2008 à 16:27:37 | Re : Utilisation de Fichiers txt en C++.net

zebulon88

J'ai trouvé readtoend qui me permet de lire jusqu'a la fin du fichier.
Mais en fait je ne peux pas lire les dernières lignes de mon fichier initial  il s'arrete avant d'arriver à la toute fin...

sr->BaseStream->Seek(-200004,SeekOrigin::End);

sw->WriteLine(sr->ReadToEnd());



Cette discussion est classée dans : fichier, net, fichiers, txt, utilisation


Répondre à ce message

Sujets en rapport avec ce message

récupération de données excel avec vb.net et bascule vers un fichier unique .txt [ par coeurdenoir ] Bonjour,je suis un débutant alors ne soyez trop dur avec moi.Voila je travaille sur un projet informatique et aujourd'hui je bloque sur un point qui utilisation de scripte stoquer dans un fichier txt ??? [ par li ] bonjour, certain programme, plus souvent des serveurs de jeu utilise des fichier dans lequel se trouve des scriptes non compiler que laplication utili Gros problème sur les fichiers en C [ par Zworykin ] Bjr à tous voià dans le cadre d'un tp je dois faire les fichiers de mon programme. j'arrive à écrire dans mon fichier mais je calle trop et c'est pas En C++, stocker dans un AnsiString le contenu d'un fichier .txt [ par pokerdany ] Bonjour tout le monde! Après de longues recherches qui ne m'ont pas amenées à un résultat satisfaisant, je repose la question, en espérant que je ne v probleme de recherche [ par rachidotec ] bjr, jèai un probleme de recherche des fichiers selon la date de création. le problem est comme suite: -j'ai crée une application qui regroupe des fic comment désactiver lecture seul sur dique FAT32 [ par mikouRoux ] Salut,J'essaye d'installer indexHiBit (CMS très simple) en local pour pouvoir y faire des modificationsPour pouvoir l'installer (http://www.indexhibit Installation et utilisation de Libxml2 sous windows [ par boualiasma ] Salut,Je suis entrain de programmer en C avec Visual studio 2008 sous Windows.Je voudrais parser un fichier XML dans mon programme C. J'ai trouvé libx fichiers en C [ par boualiasma ] Salut, 1) Dans mon travail, j'utilise des fichiers. je crée un fichier "essai.txt" pour le remplir fp = fopen("essai.txt","w"); // je fais des tra memmove() et fichiers ? [ par boualiasma ] Salut, 1) je trouve un exemple de memmove() sous windows : Code : C 1 2 3 4 5 6 7 8 9 10 11 12 /* memmove example */ #include #includ


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales