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
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.