Bueno, siguiendo de acuerdo al código que ya escribiste, te voy a tratar de explicar lo que puedes hacer.
Lo que tenías está bastante bien. Verás en el siguiente código, una manera diferente de usar los
StreamReadery
StreamWriter, te explico.
Utilizando el
using, garantizamos que el
stream se cree y a la vez dentro del ámbito del
using este abierto, luego que se salga de ese ámbito, el
stream automáticamente se cierra. Gracias a esta funcionalidad podemos hacer uso del método
Peek() que te devuelve el próximo caracter disponible (sin consumirlo), este método devuelve un
int, entonces devuelve -1 si no hay chars para leer por lo tanto utilizamos eso para controlar el ciclo, ahora, este puntero es modificado por varios métodos de la clase
StreamReader. Como por ejemplo el que utilicé:
ReadBlock(). El cuál recibe varios parámetros, un array de char (
char[]), el cuál va a servir como un buffer para ir almacenando en este caso los 15 chars leídos (debes declararlo e iniciarlo previamente como verás en el código. El otro parámetro es la posición en cual va a comenzar a copiar los chars en el buffer, en este caso 0, para que sea desde el principio. Y por último, la cantidad de chars a leer del fichero, 15 en este caso.
Luego la otra linea se ejecuta sobre el
StreamWriter, es el método
Write(), el cual tiene varias sobrecargas (varias definiciones del método donde cambian los tipos de parámetros y/o la cantidad). En particular tiene una que recibe un array de char (
char[]), o sea un buffer. Por lo tanto le pasamos el buffer que teníamos anteriormente y el escribirá en el
StreamWriter los chars en ese array.
Por ultimo, tienes que añadir a los usings de tu aplicación:
using System.Threading;
para poder hacer uso del método estático
Thread.Sleep(5000);
Donde 5000 significan los 5s, pues el método recibe como parámetro un
int que son la cantidad de milisegundos que te va a suspender el hilo actual (esperar).
Aquí te dejo el código:
Console.WriteLine("Ingrese ruta del archivo de origen: ");
string rutaO = Console.ReadLine();
Console.WriteLine("Ingrese ruta del archivo de destino: ");
string rutaD = Console.ReadLine();
Console.WriteLine("Ingrese el contador: ");
int cont = int.Parse(Console.ReadLine());
using (StreamReader sr
= new StreamReader
(rutaO
)) {
using(StreamWriter sw
= new StreamWriter
(rutaD
)) {
int i = cont;
while (sr.Peek() != -1)
{
if (i == 0)
{
Thread.Sleep(5000);
i = cont;
}
char[] buffer
= new char[15]; //creamos e inicializamos el array de char para usarlo como buffer sr.ReadBlock(buffer, 0, 15); //Lee y copia en el buffer desde el StreamReader
sw.Write(buffer); //Escribe en el StreamWriter desde el buffer
i--;
}
}
}
Espero lo hayas entendido todo, trate de explicarte lo mejor posible.
Dinos como te funcionó.
Saludos