• Domingo 22 de Diciembre de 2024, 19:42

Autor Tema:  Error al escribir  (Leído 1518 veces)

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Error al escribir
« en: Viernes 23 de Octubre de 2009, 21:43 »
0
Código: C#
  1.  
  2. //EJERCICIO : Buscar los ficheros HTML y eliminar las lineas que contengan la cadena <codigo del virus>
  3.  
  4. using System;
  5. using System.IO;
  6.  
  7. class Programa
  8. {
  9.     static void ListadoDirectorio (string dire)
  10.     {
  11.         string[] dirs = Directory.GetDirectories(dire); //devuelve una array de string con los subdirectorios que hay dentro.
  12.        
  13.  
  14.         foreach ( string d in dirs ) //coje los caracteres de la array dirs
  15.         {
  16.             Console.WriteLine(d);
  17.             ListadoDirectorio(d);
  18.         }
  19.        
  20.         string[] fils = Directory.GetFiles(dire);
  21.        
  22.         foreach (string f in fils)
  23.         {
  24.             Console.WriteLine(f,"*.html");
  25.             Limpia(f);
  26.         }
  27.     }
  28.    
  29.     static void Limpia(string f)
  30.     {
  31.         //Aqui comprobamos si el fichero contiene el codigo del virus y lo eliminamos
  32.         StreamReader sr = new StreamReader(f); // declaracion de la variable sr de lectura
  33.         StreamWriter sw = new StreamWriter("temp.html"); //declaracion de la variable sw de escritura
  34.        
  35.            
  36.         string linia = sr.ReadLine();
  37.         while ( linia != null ) // lee la linia
  38.         {
  39.            
  40.             linia = sr.ReadLine();
  41.             if ( linia != "<codigo del virus>" )
  42.             {
  43.                 sw.WriteLine(linia);
  44.                 //Console.WriteLine(error1);
  45.             }
  46.             else
  47.             {
  48.                 //Console.WriteLine("error2");
  49.                 Console.WriteLine("El fitxer {0} te un virus.",f);
  50.             }
  51.             linia = sr.ReadLine();
  52.         }
  53.         sw.Close();
  54.         sr.Close();
  55.    
  56.         File.Delete(f);
  57.         File.Move("temp.html",f); //origen,destino
  58.        
  59.     }
  60.    
  61.    
  62.    
  63.     static void Main()
  64.     {
  65.         try
  66.         {
  67.             string dir = "c:\tools";
  68.             ListadoDirectorio(dir);
  69.         }
  70.         catch ( Exception e )
  71.         {
  72.             Console.WriteLine(e.ToString());
  73.         }
  74.     Console.ReadKey();  
  75.     }
  76.    
  77. }
  78.  
  79.  

Pq cuando intenta entrar en el archivo me mide acceso denegado ?

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Error al escribir
« Respuesta #1 en: Viernes 23 de Octubre de 2009, 22:24 »
0
Uep, català, mallorquí??

Bueno vamos a ver, no tengo mucho tiempo ahora mismo, estoi haciendo la cena y si me lio me mata la novia, por lo que no he podido ver en profundidad el codigo.

puede que sea pq el archivo esta en uso por otra aplicación?

bueno si no es eso ya mañana por la mañana me lo miro y si puedo te ayudo

saludos

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Error al escribir
« Respuesta #2 en: Sábado 24 de Octubre de 2009, 14:28 »
0
No creo, pq la carpeta es una copia de otra y no se esta utilizando.
Porcierto soy de barcelona, vamos catalan xDDD

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Error al escribir
« Respuesta #3 en: Sábado 24 de Octubre de 2009, 16:14 »
0
buen de momento no veo o no entiendo pq deberia darte error, donde si veo un posible error pero creo que nada que ver con el tullo es en las lineas:

Código: C#
  1.  
  2. string linia = sr.ReadLine();
  3.          while ( linia != null ) // lee la linia
  4.          {
  5.            
  6.              linia = sr.ReadLine();  //CREO QUE DEBERIAS BORRAR ESTA LINEA DE CODIGO
  7.              if ( linia != "<codigo del virus>" )
  8.              {
  9.                  sw.WriteLine(linia);
  10.                  //Console.WriteLine(error1);
  11.              }
  12.              else
  13.              {
  14.                  //Console.WriteLine("error2");
  15.                  Console.WriteLine("El fitxer {0} te un virus.",f);
  16.              }
  17.              linia = sr.ReadLine();
  18.          }
  19.  
  20.  

Antes de entrar en el bucle lees la 1ª linea del archivo y la asignas a "linia" OK
Entras en el bucle y vuelves a leer una nueva linea asignandola a "linia" por lo que estas perdiendo y no procesando la primera
Luego cuando sales del if, else vuelves a leer, aki ok, pero luego cuando vuelves a seguir el bucle vuelves a leer saltandote otra vez una linea.

Con esto lo que haces es procesar una linea si y otra no.

Bueno con tu problema, cuando te da error? cuando el programa intanta abrirlo a cuando una vez has hecho el proceso lo intantas abrir? pq di es despues del proceso el error puede ser debido a lo anterior ya que te has cargado la mitad de lineas del archivo.

Si no es eso no tengo ni idea, alomejor deberias probar con la clase FileStream.

Saludos, y dime cosas

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Error al escribir
« Respuesta #4 en: Sábado 24 de Octubre de 2009, 21:47 »
0
Pues era esa tonteria que liao dos veces.
Gracias ^^

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Error al escribir
« Respuesta #5 en: Domingo 25 de Octubre de 2009, 10:51 »
0
Me alegro entonces que fuera eso.

Saludos y para lo que necesites