2010-12-01 8 views
1

J'ai utilisé ce codeécrit dans un fichier texte et lire ce fichier texte

var dest1 = File.AppendText(Path.Combine(_logFolderPath, "log1.txt")); 
    dest1.WriteLine(line.Trim()); 

à écrire dans un fichier texte log1.txt après que je dois lire ce fichier texte ...

je l'ai déclaré dans une variable ... Je sais que ce n'est pas possible..but je ne sais pas comment

using (var file = File.OpenText(dest1)) 

Comment ouvrir ce fichier texte et lire ce fichier en utilisant

while ((line2 = file.ReadLine()) != null) 

Une suggestion?

EDIT:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString); 
      SqlDataAdapter da = new SqlDataAdapter("select codesnippet from edk_custombrsnippet_vw", con); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      string line = dt.Rows[0].ItemArray[0].ToString().Replace("\n", Environment.NewLine).Replace("\r", Environment.NewLine); 
      ; 

      //MessageBox.Show(line); 

      string Filepath2 = TextBox1.Text; 
      int counter = 1; 
      string line2; 

      if (File.Exists(Filepath2)) 
      { 
       DirectoryInfo Folder = new DirectoryInfo(textboxPath.Text); 
       var _logFolderPath = Path.Combine(textboxPath.Text.Trim(), "log"); 
       if (Folder.Exists) 

        if (!Directory.Exists(_logFolderPath)) 
         Directory.CreateDirectory(_logFolderPath); 

       string filename = Path.Combine(_logFolderPath, "log1.txt"); 
       var dest1 = File.AppendText(filename); 

        dest1.WriteLine(line.Trim()); 

       using (var file = File.OpenText(filename)) 
       { 
        using (var file2 = File.OpenText(Filepath2)) 
        { 
         bool time = false; 

         while ((line2 = file2.ReadLine()) != null) 
         { 
          using (var dest = File.AppendText(Path.Combine(_logFolderPath, "log.txt"))) 
          { 
           if (!time) 
           { 
            dest.WriteLine(""); 
            dest.WriteLine("---------------------" + DateTime.Now + "---------------------"); 
            time = true; 
           } 
           bool patternwritten = false; 
           while ((line = file.ReadLine()) != null) 
           { 
            if (line.IndexOf(line2, StringComparison.CurrentCultureIgnoreCase) != -1) 
            { 
             if (!patternwritten) 
             { 
              dest.WriteLine(""); 
              dest.WriteLine("Pattern Name : " + line2); 
              patternwritten = true; 
             } 
             dest.WriteLine("LineNo : " + counter.ToString() + " : " + "   " + line.Trim()); 
            } 
            counter++; 
           } 
           //FilePath.BaseStream.Seek(0, SeekOrigin.Begin); 
           counter = 1; 
          } 
         } 
        } 
       } 
+0

Il est clair pour moi que la question réelle est ... ce qui se comporte pas comme prévu? ou qu'est-ce que vous voulez exactement qui ne se passe pas? –

+0

@bala, pourriez-vous s'il vous plaît élaborer quel est le problème exact que vous faites face .... – RameshVel

+0

@ Marc Gravell: j'ai écrit un texte dans un fichier je ne sais pas comment lire ce fichier texte et le lire ligne par ligne ... bcoz j'ai utilisé une variable – bala3569

Répondre

4

Conservez le nom de fichier dans une variable comme ceci:

string filename = Path.Combine(_logFolderPath, "log1.txt"); 

utiliser ensuite dans les lignes suivantes:

var dest1 = File.AppendText(filename); 
... 
using (var file = File.OpenText(filename)) 

Ensuite, le reste devrait travailler attendu. Dans votre code ci-dessus vous essayiez de passer un StreamWriter à la méthode File.OpenText qui est fausse.

+0

@Josh Einstein: U compris mon problème – bala3569

+0

@Josh Einstein: maintenant il est dit Le processus ne peut pas accéder au fichier 'C: \ Documents and Settings \ tp1391 \ Desktop \ log \ log1.txt 'car il est utilisé par un autre processus. – bala3569

+0

@Josh Einstein: en écrivant lui-même je lis ce fichier texte donc il montre cette erreur ... comment lire ce fichier après avoir fini d'écrire – bala3569

2

Vous ne fermez pas le fichier après l'avoir écrit, donc votre programme a toujours un handle ouvert sur le fichier, ce qui signifie que vous ne pouvez pas ouvrir un autre handle pour en lire.

Ce bit:

var dest1 = File.AppendText(filename); 

dest1.WriteLine(line.Trim()); 

devrait être:

using (var dest1 = File.AppendText(filename)) 
{ 
    dest1.WriteLine(line.Trim()); 
} 
+0

C'est correct jon – bala3569

Questions connexes