2009-10-13 6 views
0

J'ai plusieurs fichiers avec des extensions * .mol. Dans la dernière ligne de certains d'entre eux, il y a le texte "M END". J'ai besoin d'un programme pour lire tous ces fichiers, en cherchant la ligne "M END" dans ces fichiers et écrire "M END" pour ceux d'entre eux qui n'ont pas la ligne "M END" à la fin du fichier. J'ai écrit le code C# suivant, mais cela ne fonctionne pas.Comment lire certains textes contenant une ligne, puis ajouter ce texte à ceux de plusieurs fichiers dans lesquels cette ligne de texte est absente?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 


namespace ConsoleApplication6 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      foreach (string fileName in Directory.GetFiles("C:\\abc\\", "*.mol")) 
      { 

       System.IO.StreamReader file = new System.IO.StreamReader(fileName);      
       if ((file.ReadLine()) != ("M END")) 
       { 
        File.AppendAllText(fileName, "M END" + Environment.NewLine); 

       } 


      } 

     } 
    } 
} 

S'il vous plaît, aidez-moi! Merci pour toutes les réponses.

Répondre

1

Si vos fichiers ne sont pas grand, vous pouvez essayer cette

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 


namespace ConsoleApplication6 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      foreach (string fileName in Directory.GetFiles("C:\\abc\\", "*.mol")) 
      { 
       bool shouldAddMEnd = false; 
       using (System.IO.StreamReader sw = new System.IO.StreamReader(fileName)) 
       { 
        shouldAddMEnd = !sw.ReadToEnd().EndsWith("M END");       
       } 
       if (shouldAddMEnd) 
        File.AppendAllText(fileName, "M END" + Environment.NewLine); 
      } 
     } 
    } 
} 
+0

J'ai essayé, mais il ne fonctionne toujours pas. La même erreur que dans mon code se produit lors du débogage: "Le processus ne peut pas accéder au fichier 'C: \ abc \ 2ap-15.mol' car il est utilisé par un autre processus." Et il s'arrête sur la ligne suivante: "File.AppendAllText (nomFichier," M END "+ Environment.NewLine);" – Alex

+0

Oh, oui, je n'ai pas noté, essayez le code édité maintenant –

Questions connexes