Bueno gracias por las respuestas, si antes lo tenia asi con el EndOfStream, estuve cambiando bastante código y pensé que era fallo del bucle por eso lo cambie.
Mirad!!! Me pasa una cosa muy curiosa, como pensaba que el fallo que os voy a explicar ahora era tema del StreamReader hice el siguiente code:
FileStream readerTemas
= new FileStream
(directorio
+ "\\Temas.txt", FileMode
.Open, FileAccess
.Read); FileStream readerRespuestas
= new FileStream
(directorio
+ "\\Respuestas.txt", FileMode
.Open, FileAccess
.Read);do
{
Random r
= new Random
(DateTime
.Now.Millisecond); URL = ""; respuesta = "";
do
{
caracter = (char)(byte)readerTemas.ReadByte();
if (caracter == '\n')
break;
URL += caracter;
} while (caracter != '\n');
do
{
caracter = (char)(byte)readerRespuestas.ReadByte();
if (caracter == '\n')
break;
respuesta += caracter;
} while (caracter != '\n');
MessageBox.Show("url: " + URL + Environment.NewLine + "respuesta:" + respuesta);
Y bien es gracioso, funciona igual que lo hacía el streamreader, con el fallo igual.
La primera ejecucion muestra la primera linea de cada archivo, la segunda muestra nada en URL, y en respuesta si hay contenido, la tercera muestra contenido en URL (el de la segunda linea) y hay contenido en respuesta respectivo a su iteracion del bucle, la cuarta URL no muestra nada, y respuesta sigue mostrandose de acuerdo a su linea.
En fin Temas.txt recoge el contenido de la linea solo en las interacciones impares, y en Respuestas.txt funciona con normalidad WTF, este error lo llevaba arrastrando de tiempo y no sabia como solucionarlo, por eso deje de lado el StreamReader y pase a filestream pero ocurre igual.
El archivo solo se usa ahi para lectura, las demas veces que se una se cierra bien y su contenido con lineas con urls, pero al leer solo le lee en impares no se porque
Con el streamreader para solucionar ese error hice lo siguiente:
while (!reader.EndOfStream)
{
j++;
if (j % 2 == 0)
{
linea = reader.ReadLine();
linea = reader.ReadLine();
}
else
{
linea = reader.ReadLine();
}
mensaje = readel.ReadLine();
if (linea == "" || mensaje == "")
{
break;
}
edito: en lo de C# que es dificil y tal que es mejor C, pues que queréis que os diga mirad como se abre un fichero en C 2 lineas, y en C# tambien 2 lineas pero otros tantas opciones y instancias para abrirlos que lo hacen muy engorroso todo, si fuese C no tendría estos probleas, puede que sea por desconocimiento, pero eso de using, buffers.... en fin para mi lo hace muy complejo aunque mas completo.
Gracias por estar ayudando gente <3