Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/09/2008, 14:41
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Concatenación de Archivos de Texto

Hola de Nuevo, este mensaje es para Peterpay y para los que estén interesados en el código:

Traté de ejecutar el procedimiento que venía incluido, pero este tenía varios errores (desde algunas llaves que faltaban cerra hasta algunos elementos que no estaban declarados), pero de cualquier manera me sirvió como guía para poder realizar mi propio código. La concideración es la misma: Todos los elementos que se quieren concatenar deberán estar en el mismo directorio. El código resultante es el siguiente:
Código:
//Directorio Contiene la ruta física donde se encuentran todos los archivos
//Archivo Final es el nombre del archivo (incluyendo la ruta) que tiene la
//concatenación de todos los archivos
static void Concatena(string Directorio, string ArchivoFinal)
    {
        //Crea un arreglo con el nombre de todos los archivos existentes
        string[] ArchivosEntrada = Directory.GetFiles(Directorio);
        //Creamos el archivo Final
        FileStream Archivo = new FileStream(ArchivoFinal, FileMode.Create, 
FileAccess.Write, FileShare.None);
        //Para indicar que se va a escribir en el archivo
        StreamWriter writer = new StreamWriter(Archivo);
        foreach (string ArchivoEntrada in ArchivosEntrada)
        {
                //Cargamos el archivo correspondiente
            FileStream ArchivoConcatenar = new FileStream(ArchivoEntrada, 
FileMode.Open, FileAccess.Read);
                //Especificamos que se va a leer el archivo (nota, si no se le pone la 
//instrucción System.Text.Encoding.GetEncoding(1252) los acentos no son leidos)
            StreamReader reader = new StreamReader(ArchivoConcatenar, System.Text.Encoding.GetEncoding(1252));
            string Linea;
            //Recorremos el archivo linea a linea y la vamos escribiendo en el archivo 
//final
            while ((Linea = reader.ReadLine()) != null)
            {
                writer.WriteLine(Linea);
            }
            //Cerramos el archivo y continuamos con el siguiente                
            reader.Close();

        }
        //Cerramos el archivo Final
        writer.Close();
    }
NOTA: Para que el código funcione tal cual se tienen que agregar las siguientes referencias al inicio del código:
Código:
using System.IO;
using System.Text;
Este código ya lo probé en Visual Studio 2005 y me funcionó correctamente.

Saludos y buena suerte
Leonardo Josué










Cita:
Iniciado por Peterpay Ver Mensaje
Código:
static void Concatena(string Directorio, string ArchivoFinal)
{
string[] inputFiles = Directory.GetFiles(Directorio);
int bufSize = 1024 * 64;
byte[] buf = new byte[bufSize];
using (FileStream outFile = new FileStream(OutputFileName, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None, bufSize))
{
   foreach (string inputFile in inputFiles)
   { 
      using (FileStream inFile = new FileStream(inputFile, FileMode.Open, FileAccess.Read,FileShare.Read, bufSize))
     {
          int br = 0;
          while((br = inFile.Read(buf,0,buf.Length))>0)
          {
              outFile.Write(buf,0,br);
          }
      }
    }
}
Puedes hacer algo como eso , considerando q tengas todos los archivos en una misma carpeta y listo.