begin process at 2012 02 10 19:42:59
  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 utilisation de EOF sur les fichier .txt [ par eliramomo ] je veux lire un fichier .txt mot par mot et qu'il s'arrete lorsqu'il est a la fin , comment dois je faire svp. lecture logique d'un fichier txt en C [ par samissam ] Comment puisse je faire le traitement des données d'un fichier en langage C? Mes données sont dans un fichier txt et qui représentent un Arbre de d Recherche code pour créer fichier txt pour chaque dossier [ par henriwtf ] Bonjour, Je cherche un code me permettant de créer un fichier *.txt (dummy file) pour chaque dossier contenu dans un répertoire donné. En pratique C++ et fichier texte [ par olobo ] bonjour ! j'ai besoin d'aide pour 2 problème svp [^^happy13] [u]Problème 1 [/u] Voila j'aimerais pouvoir lire les ligne d'un fichier texte qui est rechercher un mot dans un fichier txt [ par tanguy704 ] Bonjour Je suis entrain de réaliser un jeu genre scrabble. Les mots valides proposés par les joueurs sont stockés dans un fichier txt un mot par lign Lecture ligne par ligne de fichier txt en C++pour re-jeu de données Temps Reel [ par DamienR83 ] Bonjour, Je souhaite faire une API en C++ avec un affichage de données en "pseudo temps-réel". L'ensemble des mes données sont déjà enregistrées par utilisation fichier en c++ [ par walidhas ] slt;je cherche des codes de manipulation des fichier en c++:lire fichier mot par mot;lire fichier suivant un vecteur de mot que je fixe... aussi je ve


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,310 sec (3)

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