Voici quelques code pour les fichier texte:
Permet de lire un fichier texte très rapidement
utile notamment pour les très gros fichier texte (plusieurs Mo)
Code : Tout sélectionner
; Lire un fichier a la vitesse de l'éclair
; Par M Dieppedalle David le dimanche 3 octobre 2010
file$ = OpenFileRequester("Sélectionnez un fichier","","Text (.txt)|*.txt|All files (*.*)|*.*",0)
  If file$
    If ReadFile(0, file$)
      length = Lof(0) ; Lit la taille en octets du fichier
      *MemoryID = AllocateMemory(length) ; alloue un bloc mémoire de la taille du fichier "length"
      If *MemoryID ; si l'allacation a bien fonctionner ont continue
        ReadData(0, *MemoryID, length)   ; Lit les données du fichier et les place dans le bloc mémoire "*MemoryID" de la taille correspondant à "length"
        *Fichier.String = @*MemoryID ; "*Fichier" a pour valeur l'adresse où réside la chaîne de caractères en mémoire "*MemoryID"
        Fichier$ = *Fichier\s ; "Fichier$" à pour valeur le texte où réside la chaîne de caractères en mémoire "*MemoryID"
        Debug Fichier$
      EndIf
      CloseFile(0)
    EndIf
  EndIfet a la position souhaitez
Code : Tout sélectionner
; Par M Dieppedalle David en avril  2011
Global NewList ComptenueFichier.s()
Procedure.l WriteFileLigne(NonFichier$, Texte$, NumeroLigne, Position) ; Position -1 = écrire a la fin de la ligne
  NombreLigne = 0
  If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
    While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
      NombreLigne + 1
      AddElement(ComptenueFichier())
      ComptenueFichier() = ReadString(1) ; lit ligne par ligne le contenu du fichier et l'enregistre dans la liste
    Wend
    CloseFile(1) ; Ferme le fichier précédemment ouvert
  Else ; Sinon ont affiche un message d'avertissement
    ProcedureReturn 0
  EndIf
  Debug Position
  ForEach ComptenueFichier()
    Index = ListIndex(ComptenueFichier())
    If Index = NumeroLigne - 1
      Ligne$ = ComptenueFichier()
      If Position = -1
        Position = Len(Ligne$) + 1
      ElseIf Position <= 0
        Position = 1
      ElseIf Position > Len(Ligne$)
        Position = Len(Ligne$)
      EndIf
      Ligne$ = InsertString(Ligne$, Texte$, Position)
      ComptenueFichier() = Ligne$
      Break
    EndIf
  Next ComptenueFichier()
  
  If DeleteFile(NonFichier$)
    If OpenFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
      ForEach ComptenueFichier()
        WriteStringN(1, ComptenueFichier())
      Next ComptenueFichier()
      CloseFile(1)
    Else
      ProcedureReturn 0
    EndIf
  Else
    ProcedureReturn 0
  EndIf
  
  ProcedureReturn 1
EndProcedureCode : Tout sélectionner
; Par M Dieppedalle David en avril  2011
Global NombreLigne = 0
Procedure CountFileLine(NonFichier$)
  If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
    While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
      NombreLigne + 1
      ReadString(1) ; lit ligne par ligne le contenu du fichier
    Wend
    CloseFile(1) ; Ferme le fichier précédemment ouvert
  Else ; Sinon ont affiche un message d'avertissement
    MessageRequester("Information","Impossible d'ouvrir le fichier !")
  EndIf
EndProcedureCode : Tout sélectionner
; Par M Dieppedalle David en avril  2011
Global NewList ComptenueFichier.s()
Procedure.l DeleteFileLigne(NonFichier$, NumeroLigne)
  NombreLigne = 0
  If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
    While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
      NombreLigne + 1
      AddElement(ComptenueFichier())
      ComptenueFichier() = ReadString(1) + Chr(13) + Chr(10) ; lit ligne par ligne le contenu du fichier et l'enregistre dans la liste
    Wend
    CloseFile(1) ; Ferme le fichier précédemment ouvert
  Else ; Sinon ont affiche un message d'avertissement
    ProcedureReturn 0
  EndIf
  
  ForEach ComptenueFichier()
    Index = ListIndex(ComptenueFichier())
    If Index = NumeroLigne - 1
      DeleteElement(ComptenueFichier(), 1)
      Break
    EndIf
  Next ComptenueFichier()
  
  If DeleteFile(NonFichier$)
    If OpenFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
      ForEach ComptenueFichier()
        WriteString(1, ComptenueFichier())
      Next ComptenueFichier()
      
      CloseFile(1)
    Else ; Sinon ont affiche un message d'avertissement
      ProcedureReturn 0
    EndIf
  Else
    ProcedureReturn 0
  EndIf
  
  ProcedureReturn 1
EndProcedurechaine d'un coup a la ligne souhaiter dans le fichier
Code : Tout sélectionner
; Par M Dieppedalle David en avril  2011
Global NewList ComptenueFichier.s()
Procedure.l RemoveCharFileLigne(NonFichier$, ChaineASupprimer$, NumeroLigne, Position, Mode, SupprimerNombreOccurence) ; Position -1 = supprimer le dernier caractère a la fin de la ligne
  
  If Mode = 0
    Mode = #PB_String_NoCase
  ElseIf Mode = 1
    Mode = 0
  Else
    Mode = #PB_String_NoCase
  EndIf
  
  NombreLigne = 0
  If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
    While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
      NombreLigne + 1
      AddElement(ComptenueFichier())
      ComptenueFichier() = ReadString(1) ; lit ligne par ligne le contenu du fichier et l'enregistre dans la liste
    Wend
    CloseFile(1) ; Ferme le fichier précédemment ouvert
  Else ; Sinon ont affiche un message d'avertissement
    ProcedureReturn 0
  EndIf
  
  ForEach ComptenueFichier()
    Index = ListIndex(ComptenueFichier())
    If Index = NumeroLigne - 1
      Ligne$ = ComptenueFichier()
      If Position = -1
        Position = Len(Ligne$)
      ElseIf Position <= 0
        Position = 1
      ElseIf Position > Len(Ligne$)
        Position = Len(Ligne$)
      EndIf
      Ligne$ = RemoveString(Ligne$, ChaineASupprimer$, Mode, Position, SupprimerNombreOccurence)
      ComptenueFichier() = Ligne$
      Break
    EndIf
  Next ComptenueFichier()
  
  If DeleteFile(NonFichier$)
    If OpenFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
      ForEach ComptenueFichier()
        WriteStringN(1, ComptenueFichier())
      Next ComptenueFichier()
      CloseFile(1)
    Else
      ProcedureReturn 0
    EndIf
  Else
    ProcedureReturn 0
  EndIf
  
  ProcedureReturn 1
EndProceduresouhaiter dans le fichier
Code : Tout sélectionner
; Par M Dieppedalle David en avril  2011
Global NewList ComptenueFichier.s()
Procedure.l ReplaceCharFileLigne(NonFichier$, ChaineARechercher$, RemplacerChainePar$, NumeroLigne, PositionDepart, Mode) ; Position -1 = Remplacer le dernier caractère a la fin de la ligne
  
  If Mode = 0
    Mode = #PB_String_NoCase
  ElseIf Mode = 1
    Mode = 0
  Else
    Mode = #PB_String_NoCase
  EndIf
  
  NombreLigne = 0
  If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
    While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
      NombreLigne + 1
      AddElement(ComptenueFichier())
      ComptenueFichier() = ReadString(1) ; lit ligne par ligne le contenu du fichier et l'enregistre dans la liste
    Wend
    CloseFile(1) ; Ferme le fichier précédemment ouvert
  Else ; Sinon ont affiche un message d'avertissement
    ProcedureReturn 0
  EndIf
  
  ForEach ComptenueFichier()
    Index = ListIndex(ComptenueFichier())
    If Index = NumeroLigne - 1
      Ligne$ = ComptenueFichier()
      If Position = -1
        Position = Len(Ligne$)
      ElseIf Position <= 0
        Position = 1
      ElseIf Position > Len(Ligne$)
        Position = Len(Ligne$)
      EndIf
      Ligne$ = ReplaceString(Ligne$, ChaineARechercher$, RemplacerChainePar$, Mode, Position)
      ComptenueFichier() = Ligne$
      Break
    EndIf
  Next ComptenueFichier()
  
  If DeleteFile(NonFichier$)
    If OpenFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
      ForEach ComptenueFichier()
        WriteStringN(1, ComptenueFichier())
      Next ComptenueFichier()
      CloseFile(1)
    Else
      ProcedureReturn 0
    EndIf
  Else
    ProcedureReturn 0
  EndIf
  
  ProcedureReturn 1
EndProcedureCode : Tout sélectionner
Global NewList Fichier.s()
Global NombreLigne = 0
Procedure.l FileOperation(NomFichier$ = "", TypeOperation$ = "", NumeroLigne = 1, Chaine1$ = "", Chaine2$ = "", Position = 1, Mode = 0, Occurence = 1)
  
  ClearList(Fichier())
  
  If TypeOperation$ = "ReadSimple"
    
    If ReadFile(1, NomFichier$) ; Si le fichier peut être lu , on continue...
      While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
        AddElement(Fichier())
        Fichier() = ReadString(1) ; Affiche ligne par ligne le contenu du fichier
      Wend
      CloseFile(1) ; Ferme le fichier précédemment ouvert
      ProcedureReturn 1
    Else ; Sinon ont affiche un message d'avertissement
      ProcedureReturn 0
    EndIf
    
  ElseIf NomFichier$ = "ReadSpeed"
    ; Lire un fichier a la vitesse de l'éclair
    ; Par M Dieppedalle David le dimanche 3 octobre 2010
    Ligne = 0
        If ReadFile(1, file$) 
          length = Lof(1) ; Lit la taille en octets du fichier 
          *MemoryID = AllocateMemory(length) ; alloue un bloc mémoire de la taille du fichier "length"
          If *MemoryID ; si l'allacation a bien fonctionner ont continue
            ReadData(1, *MemoryID, length)   ; Lit les données du fichier et les place dans le bloc mémoire "*MemoryID" de la taille correspondant à "length"
            *Fichier.String = @*MemoryID ; "*Fichier" a pour valeur l'adresse où réside la chaîne de caractères en mémoire "*MemoryID"
            Donnee$ = *Fichier\s ; "Fichier$" à pour valeur le texte où réside la chaîne de caractères en mémoire "*MemoryID"
            
            Repeat
              Ligne + 1
              AddElement(Fichier())
              Fichier() = StringField(Donnee$, Ligne, Chr(13) + Chr(10))
            Until Lecture$ = ""
            
            ProcedureReturn 1
          Else
            ProcedureReturn 0
          EndIf
          CloseFile(0)
        Else
          ProcedureReturn 0
        EndIf
      
    ElseIf NomFichier$ = "WriteSimple"
      If OpenFile(1, NomFichier$)    ; Ouvre un fichier existant ou en crée un nouveau s'il n'existait pas
        FileSeek(1, Lof(1))         ; Place le pointeur à la fin du fichier en utilisant le résultat de Lof() 
        WriteStringN(1, Chaine1$)
        CloseFile(1)
        ProcedureReturn 1
      Else ; Sinon ont affiche un message d'avertissement
        ProcedureReturn 0
      EndIf
      
    ElseIf NomFichier$ = "WriteStringLine"
      
      ; Position -1 = écrire a la fin de la ligne
        NombreLigne = 0
        If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
          While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            NombreLigne + 1
            AddElement(Fichier())
            Fichier() = ReadString(1) ; lit ligne par ligne le contenu du fichier et l'enregistre dans la liste
          Wend
          CloseFile(1) ; Ferme le fichier précédemment ouvert
        Else ; Sinon ont affiche un message d'avertissement
          ProcedureReturn 0
        EndIf
        Debug Position
        ForEach Fichier()
          Index = ListIndex(Fichier())
          If Index = NumeroLigne - 1
            Ligne$ = Fichier()
            If Position = -1
              Position = Len(Ligne$) + 1
            ElseIf Position <= 0
              Position = 1
            ElseIf Position > Len(Ligne$)
              Position = Len(Ligne$)
            EndIf
            Ligne$ = InsertString(Ligne$, Chaine1$, Position)
            Fichier() = Ligne$
            Break
          EndIf
        Next Fichier()
        
        If DeleteFile(NonFichier$)
          If OpenFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
            ForEach Fichier()
              WriteStringN(1, Fichier())
            Next Fichier()
            CloseFile(1)
          Else
            ProcedureReturn 0
          EndIf
        Else
          ProcedureReturn 0
        EndIf
        
        ProcedureReturn 1
      
    ElseIf NomFichier$ = "CountLine"
        If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
          While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            NombreLigne + 1
            ReadString(1) ; lit ligne par ligne le contenu du fichier
          Wend
          CloseFile(1) ; Ferme le fichier précédemment ouvert
          ProcedureReturn 1
        Else ; Sinon ont affiche un message d'avertissement
          ProcedureReturn 0
        EndIf
        
    ElseIf NomFichier$ = "RemoveLine"
        NombreLigne = 0
        If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
          While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            NombreLigne + 1
            AddElement(Fichier())
            Fichier() = ReadString(1) + Chr(13) + Chr(10) ; lit ligne par ligne le contenu du fichier et l'enregistre dans la liste
          Wend
          CloseFile(1) ; Ferme le fichier précédemment ouvert
        Else ; Sinon ont affiche un message d'avertissement
          ProcedureReturn 0
        EndIf
        
        ForEach Fichier()
          Index = ListIndex(Fichier())
          If Index = NumeroLigne - 1
            DeleteElement(Fichier(), 1)
            Break
          EndIf
        Next Fichier()
        
        If DeleteFile(NonFichier$)
          If OpenFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
            ForEach Fichier()
              WriteString(1, Fichier())
            Next Fichier()
            
            CloseFile(1)
          Else ; Sinon ont affiche un message d'avertissement
            ProcedureReturn 0
          EndIf
        Else
          ProcedureReturn 0
        EndIf
        
        ProcedureReturn 1
      
    ElseIf NomFichier$ = "RemoveStringLine"
      ; Position -1 = supprimer le dernier caractère a la fin de la ligne
        If Mode = 0
          Mode = #PB_String_NoCase
        ElseIf Mode = 1
          Mode = 0
        Else
          Mode = #PB_String_NoCase
        EndIf
        
        NombreLigne = 0
        If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
          While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            NombreLigne + 1
            AddElement(Fichier())
            Fichier() = ReadString(1) ; lit ligne par ligne le contenu du fichier et l'enregistre dans la liste
          Wend
          CloseFile(1) ; Ferme le fichier précédemment ouvert
        Else ; Sinon ont affiche un message d'avertissement
          ProcedureReturn 0
        EndIf
        
        ForEach Fichier()
          Index = ListIndex(Fichier())
          If Index = NumeroLigne - 1
            Ligne$ = Fichier()
            If Position = -1
              Position = Len(Ligne$)
            ElseIf Position <= 0
              Position = 1
            ElseIf Position > Len(Ligne$)
              Position = Len(Ligne$)
            EndIf
            Ligne$ = RemoveString(Ligne$, Chaine1$, Mode, Position, Occurence)
            Fichier() = Ligne$
            Break
          EndIf
        Next Fichier()
        
        If DeleteFile(NonFichier$)
          If OpenFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
            ForEach Fichier()
              WriteStringN(1, Fichier())
            Next Fichier()
            CloseFile(1)
          Else
            ProcedureReturn 0
          EndIf
        Else
          ProcedureReturn 0
        EndIf
        
        ProcedureReturn 1
      
    ElseIf NomFichier$ = "ReplaceStringLine"
      ; Par M Dieppedalle David en avril  2011
      ; Position -1 = Remplacer le dernier caractère a la fin de la ligne
        
        If Mode = 0
          Mode = #PB_String_NoCase
        ElseIf Mode = 1
          Mode = 0
        Else
          Mode = #PB_String_NoCase
        EndIf
        
        NombreLigne = 0
        If ReadFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
          While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            NombreLigne + 1
            AddElement(Fichier())
            Fichier() = ReadString(1) ; lit ligne par ligne le contenu du fichier et l'enregistre dans la liste
          Wend
          CloseFile(1) ; Ferme le fichier précédemment ouvert
        Else ; Sinon ont affiche un message d'avertissement
          ProcedureReturn 0
        EndIf
        
        ForEach Fichier()
          Index = ListIndex(Fichier())
          If Index = NumeroLigne - 1
            Ligne$ = Fichier()
            If Position = -1
              Position = Len(Ligne$)
            ElseIf Position <= 0
              Position = 1
            ElseIf Position > Len(Ligne$)
              Position = Len(Ligne$)
            EndIf
            Ligne$ = ReplaceString(Ligne$, Chaine1$, Chaine2$, Mode, Position)
            Fichier() = Ligne$
            Break
          EndIf
        Next Fichier()
        
        If DeleteFile(NonFichier$)
          If OpenFile(1, NonFichier$) ; Si le fichier peut être lu , on continue...
            ForEach Fichier()
              WriteStringN(1, Fichier())
            Next Fichier()
            CloseFile(1)
          Else
            ProcedureReturn 0
          EndIf
        Else
          ProcedureReturn 0
        EndIf
        
        ProcedureReturn 1
           
    Else
      
    EndIf
    
  EndProcedure
  
; IDE Options = PureBasic 4.60 Beta 2 (Windows - x86)
; CursorPosition = 8
; Folding = -
; EnableXP
; EnableUser
; EnableOnError
; EnableCompileCount = 11
; EnableBuildCount = 0
; EnableExeConstant