Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Utilisation de Fichiers txt en C++.net [ Divers / Débutant(e) ] (zebulon88)

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é 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 Lire dans un *.txt un tableau de long ecrit par cfile [ par kididouille ] Bonjour j'ai un pb:J'ai un tableau de long  "long *TabProj;" je desire enregistrer le contenu de ce tableau dans un fichier texte: CFile Fichier;Fichi Lecture Fichier TXT [ par DroledeBx ] Bonjour,j'ai un problème de récupération des données à partir d'un fichier texte.Chaque ligne de mon fichier txt est sous la forme:"un_entier un_doubl Caracteres speciaux et fichier txt [ par vita83 ] Bonjour a tous ,bien qu'inscrit depuis un certain temps je debute sous c++J'utilise dev c++ pour infoJ'ai 2 "problemes" en fait :1 ) Comment afficher Fichier .txt en C ou Dynamic C [ par joffreycolors ] Bonjour,j'aurais voulu savoir comment enregistrer les valeurs contenu dans un tableau dans un fichier .txt ou autressachant que je travail en Dynamic charger fichier txt dan tableau [ par hazemwannous ] Bonjour à tous ;j'ai un problème lorsque j'essaye de lire un fichier (.txt) et stocker le continu dans un tableau. mon fichier (.txt) est de trois col c++ [ par ndefa ] bonjour,j'ai un ensembles de réels dans  fichier  test.txt constiuté de n lignes  et 8 colonnes . je voudrais pouvoir le lire ligne par ligne et le c Calcul d'un prix en prenant des valeur dans un fichier txt [ par 59oudz ] bonjour mon application c un magasin de musique ou je ven dé album il se trouve dans un fichier txt je lé met ds une liste box avec un bouton je chois


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.