leer la siguiente linea del fichero
Publicado por jevikris (3 intervenciones) el 14/08/2007 14:07:37
Hola!
He estado mirando en un libro de C sharp asi como en diversos foros pero no encuentro la manera de hacer lo que busco ....
A ver si me podeis echar una mano :)
El programa que realizo controlara un robot, para ello he de leer los comandos que vienen dados en un fichero. Cada linea del fichero tiene comandos dirigidos a un motor del robot.
Como las acciones son secuenciales solo quiero leer una linea del fichero cada vez que acceda a la funcion leer fichero .
Cada linea del fichero tiene un tamanyo diferente pues los campos no son los mismos para cada comando, asi pues hasta encontrar la \n de final de linea, cada vez que lea una linea guardare en un string[] los diferentes campos del comando a ejecutar sin incluir los espacios ....
lo que he hecho por desgracia no refleja lo que quiero hacer porque solo lee la misma linea del fichero ....
public static string[] Read(StreamReader sread) {
string[] aline = new string[20];
string line = sread.ReadLine();
if (line == null) { aline = null; Console.WriteLine("end of file"); }
//EOF
else
{
line = line.Replace('\t', ' ').Trim();
const char space = ' ';
const char end = '\n';
char[] delimiters = new char[]
{
space,
end
};
foreach (string subString in line.Split(delimiters))
{
aline[i] = subString;
i++;
}
}
return aline;
}
lo unico que se me ocurre es utilizar sread.Read, contar el numero de caracteres de cada linea, poner un contador, guardarlo todo en el buffer de caracteres, pasar el buffer de caracteres a un string cada vez q haya un espacio ... etc
pero me parece bastante tedioso y me extranya q no haya una forma mas "limpia" de hacerlo....
Cualquier ayuda se agradece!!!
Muchas gracias de antemano :)
Cris
He estado mirando en un libro de C sharp asi como en diversos foros pero no encuentro la manera de hacer lo que busco ....
A ver si me podeis echar una mano :)
El programa que realizo controlara un robot, para ello he de leer los comandos que vienen dados en un fichero. Cada linea del fichero tiene comandos dirigidos a un motor del robot.
Como las acciones son secuenciales solo quiero leer una linea del fichero cada vez que acceda a la funcion leer fichero .
Cada linea del fichero tiene un tamanyo diferente pues los campos no son los mismos para cada comando, asi pues hasta encontrar la \n de final de linea, cada vez que lea una linea guardare en un string[] los diferentes campos del comando a ejecutar sin incluir los espacios ....
lo que he hecho por desgracia no refleja lo que quiero hacer porque solo lee la misma linea del fichero ....
public static string[] Read(StreamReader sread) {
string[] aline = new string[20];
string line = sread.ReadLine();
if (line == null) { aline = null; Console.WriteLine("end of file"); }
//EOF
else
{
line = line.Replace('\t', ' ').Trim();
const char space = ' ';
const char end = '\n';
char[] delimiters = new char[]
{
space,
end
};
foreach (string subString in line.Split(delimiters))
{
aline[i] = subString;
i++;
}
}
return aline;
}
lo unico que se me ocurre es utilizar sread.Read, contar el numero de caracteres de cada linea, poner un contador, guardarlo todo en el buffer de caracteres, pasar el buffer de caracteres a un string cada vez q haya un espacio ... etc
pero me parece bastante tedioso y me extranya q no haya una forma mas "limpia" de hacerlo....
Cualquier ayuda se agradece!!!
Muchas gracias de antemano :)
Cris
Valora esta pregunta


0