Pregunta sobre Archivos de Texto

09/05/2007 - 04:26 por Germán | Informe spam
Hola a todos. Necesito una mano ya que estoy trabado. Tengo que recorrer un
archivo de texto preguntando por el valor de la primer posicion de cada
línea, en donde ese valor cambie tengo que agregar una linea con un id
autoincrementable que arranque de 1 y un 1 o un 2 dependiendo del valor que
lee de la primera columna. Estuve probando el StreamReader para leer el
archivo y lo abro bien, le asigno el contenido a un richtext, pero no
encuentro manera de leer el primer valor e iterar en las demas lineas.
Si alguien me puede tirar una linea se lo agradecere mucho

Saludos a todos

Preguntas similare

Leer las respuestas

#1 Jose Escrich
09/05/2007 - 05:27 | Informe spam
Puede utilizar el streamreader, o en cualquier otro buffer, no te recomiendo
para nada meterlo en un control como el richtext. Lo que te sugiero es leer
linea por linea y utilizar expressiones regulares para determinar el
matching de cada linea. Quizas te pueda parecer un poco árido en un
principio pero si le dedicas unos minutos vas a obtener un código bien
robusto. Investiga sobre la clase Regex.

Debes tener en cuentra que para ir escribiendo el file vas a necesitar otro
stream claro, no el StreamReader.

saludos!
José Escrich
Blog: http://latincoder.com
Are you working in Software Factories? Download Software Factories Toolkit
now! http://softwarefactoriestoolkit.net


"Germán" wrote in message
news:
Hola a todos. Necesito una mano ya que estoy trabado. Tengo que recorrer
un archivo de texto preguntando por el valor de la primer posicion de cada
línea, en donde ese valor cambie tengo que agregar una linea con un id
autoincrementable que arranque de 1 y un 1 o un 2 dependiendo del valor
que lee de la primera columna. Estuve probando el StreamReader para leer
el archivo y lo abro bien, le asigno el contenido a un richtext, pero no
encuentro manera de leer el primer valor e iterar en las demas lineas.
Si alguien me puede tirar una linea se lo agradecere mucho

Saludos a todos

Respuesta Responder a este mensaje
#2 Francisco J. Rodríguez
09/05/2007 - 10:32 | Informe spam
Hola. No sé si habré entendido bien tu problema pero intento responderte.

Puedes leer la línea y guardarla en una cadena, y luego preguntar cuál es el
primer carácter de la cadena, que supongo que será lo que necesitas. Algo
así:

string registro = string.Empty;
StreamReader reader = new StreamReader("tuarchivo.txt");
while ( (registro = reader.ReadLine()) != null )
{
if (registro.Substring(0, 1) == "x")
{
// Hacer algo
}
}

A ver si puede servir. Un saludo.

Francisco J. Rodríguez

"Germán" escribió en el mensaje
news:
Hola a todos. Necesito una mano ya que estoy trabado. Tengo que recorrer
un archivo de texto preguntando por el valor de la primer posicion de cada
línea, en donde ese valor cambie tengo que agregar una linea con un id
autoincrementable que arranque de 1 y un 1 o un 2 dependiendo del valor
que lee de la primera columna. Estuve probando el StreamReader para leer
el archivo y lo abro bien, le asigno el contenido a un richtext, pero no
encuentro manera de leer el primer valor e iterar en las demas lineas.
Si alguien me puede tirar una linea se lo agradecere mucho

Saludos a todos

Respuesta Responder a este mensaje
#3 German
09/05/2007 - 19:07 | Informe spam
gracias por la ayuda, pruebo y cualquier cosa pregunto nuevamente.

Saludos

"Jose Escrich" escribió en el mensaje
news:
Puede utilizar el streamreader, o en cualquier otro buffer, no te
recomiendo para nada meterlo en un control como el richtext. Lo que te
sugiero es leer linea por linea y utilizar expressiones regulares para
determinar el matching de cada linea. Quizas te pueda parecer un poco
árido en un principio pero si le dedicas unos minutos vas a obtener un
código bien robusto. Investiga sobre la clase Regex.

Debes tener en cuentra que para ir escribiendo el file vas a necesitar
otro stream claro, no el StreamReader.

saludos!
José Escrich
Blog: http://latincoder.com
Are you working in Software Factories? Download Software Factories Toolkit
now! http://softwarefactoriestoolkit.net


"Germán" wrote in message
news:
Hola a todos. Necesito una mano ya que estoy trabado. Tengo que recorrer
un archivo de texto preguntando por el valor de la primer posicion de
cada línea, en donde ese valor cambie tengo que agregar una linea con un
id autoincrementable que arranque de 1 y un 1 o un 2 dependiendo del
valor que lee de la primera columna. Estuve probando el StreamReader para
leer el archivo y lo abro bien, le asigno el contenido a un richtext,
pero no encuentro manera de leer el primer valor e iterar en las demas
lineas.
Si alguien me puede tirar una linea se lo agradecere mucho

Saludos a todos




Respuesta Responder a este mensaje
#4 German
09/05/2007 - 19:43 | Informe spam
Hola francisco, gracias por la ayuda, lo que necesito hacer es lo siguiente:
Tengo un archivo de texto de 6 MB con miles de lineas, cada linea tiene lo
siguiente:

1 -68,74910655030 -52,20191261770
1 -68,74720655030 -52,20191261770
1 -68,74530655030 -52,20191261770
1 -68,74340655030 -52,20191261770
1 -68,74150655030 -52,20191261770
1 -68,73960655030 -52,20191261770
1 -68,73770655030 -52,20191261770
1 -68,73580655030 -52,20191261770
1 -68,73390655030 -52,20191261770
1 -68,73200655030 -52,20191261770
2 -68,71680655030 -52,20191261770
2 -68,71490655030 -52,20191261770
2 -68,71300655030 -52,20191261770
2 -68,71110655030 -52,20191261770
2 -68,70920655030 -52,20191261770
2 -68,70730655030 -52,20191261770
2 -68,70540655030 -52,20191261770
2 -68,70350655030 -52,20191261770
2 -68,70160655030 -52,20191261770

Esto de arriba por lo menos 65500 lineas. Ahora tengo que leer linea a linea
(usando el ejemplo que me pasaste esta bien) y cuando se produce el cambio
del primer digito generar una linea nueva entre la ultima del digito 1 y la
primera del digito 2 con la siguiente informacion:

1 -68,74910655030 -52,20191261770
1 -68,74720655030 -52,20191261770
1 -68,74530655030 -52,20191261770
1 -68,74340655030 -52,20191261770
1 -68,74150655030 -52,20191261770
1 -68,73960655030 -52,20191261770
1 -68,73770655030 -52,20191261770
1 -68,73580655030 -52,20191261770
1 -68,73390655030 -52,20191261770
1 -68,73200655030 -52,20191261770

"1","2",9 donde el primer valor sea un numero autoincremental que se
incremente de a uno y no se repita, el segundo valor lo saco del primer
digito de las lineas que se van a empezar a leer y el ultimo valor es la
cantidad de registros que voy a leer hasta que se produzca un nuevo cambio.

2 -68,71680655030 -52,20191261770
2 -68,71490655030 -52,20191261770
2 -68,71300655030 -52,20191261770
2 -68,71110655030 -52,20191261770
2 -68,70920655030 -52,20191261770
2 -68,70730655030 -52,20191261770
2 -68,70540655030 -52,20191261770
2 -68,70350655030 -52,20191261770
2 -68,70160655030 -52,20191261770

Gracias por todo
Saludos





"Francisco J. Rodríguez" escribió en el mensaje
news:%
Hola. No sé si habré entendido bien tu problema pero intento responderte.

Puedes leer la línea y guardarla en una cadena, y luego preguntar cuál es
el primer carácter de la cadena, que supongo que será lo que necesitas.
Algo así:

string registro = string.Empty;
StreamReader reader = new StreamReader("tuarchivo.txt");
while ( (registro = reader.ReadLine()) != null )
{
if (registro.Substring(0, 1) == "x")
{
// Hacer algo
}
}

A ver si puede servir. Un saludo.

Francisco J. Rodríguez

"Germán" escribió en el mensaje
news:
Hola a todos. Necesito una mano ya que estoy trabado. Tengo que recorrer
un archivo de texto preguntando por el valor de la primer posicion de
cada línea, en donde ese valor cambie tengo que agregar una linea con un
id autoincrementable que arranque de 1 y un 1 o un 2 dependiendo del
valor que lee de la primera columna. Estuve probando el StreamReader para
leer el archivo y lo abro bien, le asigno el contenido a un richtext,
pero no encuentro manera de leer el primer valor e iterar en las demas
lineas.
Si alguien me puede tirar una linea se lo agradecere mucho

Saludos a todos





Respuesta Responder a este mensaje
#5 Francisco J. Rodríguez
10/05/2007 - 10:45 | Informe spam
Hola German.

El problema parece algo complejo, porque tienes que ofrecer resultados
dependiendo no sólo de lo que lees, sino de lo que aún no has leído en el
fichero, si no lo he entendido mal (me refiero a escribir una línea con el
número de registros que vas a leer hasta que se produzca otro cambio, pues
para saber cuántos vas a leer primero hay que... leerlos). Además, el
fichero es grande y el tiempo que se puede emplear en leerlo y manipularlo,
también.

Si alguien no sugiere otra solución mejor (que seguro que las hay), tal vez
no te quede más remedio que "trocear" el fichero en ficheros o streams más
pequeños, y luego manipular esos ficheros. O incluso importar el archivo en
un base de datos temporal (con ODBC puede que sea más rápido que un
StreamReader), lo que tal vez te resulte más flexible para poder extraer la
información que necesitas, y crear el nuevo archivo a partir de esa base de
datos (podría servir una base de datos sencillita en Access).

Un saludo.
Francisco J. Rodríguez

"German" escribió en el mensaje
news:
Hola francisco, gracias por la ayuda, lo que necesito hacer es lo
siguiente:
Tengo un archivo de texto de 6 MB con miles de lineas, cada linea tiene lo
siguiente:

1 -68,74910655030 -52,20191261770
1 -68,74720655030 -52,20191261770
1 -68,74530655030 -52,20191261770
1 -68,74340655030 -52,20191261770
1 -68,74150655030 -52,20191261770
1 -68,73960655030 -52,20191261770
1 -68,73770655030 -52,20191261770
1 -68,73580655030 -52,20191261770
1 -68,73390655030 -52,20191261770
1 -68,73200655030 -52,20191261770
2 -68,71680655030 -52,20191261770
2 -68,71490655030 -52,20191261770
2 -68,71300655030 -52,20191261770
2 -68,71110655030 -52,20191261770
2 -68,70920655030 -52,20191261770
2 -68,70730655030 -52,20191261770
2 -68,70540655030 -52,20191261770
2 -68,70350655030 -52,20191261770
2 -68,70160655030 -52,20191261770

Esto de arriba por lo menos 65500 lineas. Ahora tengo que leer linea a
linea (usando el ejemplo que me pasaste esta bien) y cuando se produce el
cambio del primer digito generar una linea nueva entre la ultima del
digito 1 y la primera del digito 2 con la siguiente informacion:

1 -68,74910655030 -52,20191261770
1 -68,74720655030 -52,20191261770
1 -68,74530655030 -52,20191261770
1 -68,74340655030 -52,20191261770
1 -68,74150655030 -52,20191261770
1 -68,73960655030 -52,20191261770
1 -68,73770655030 -52,20191261770
1 -68,73580655030 -52,20191261770
1 -68,73390655030 -52,20191261770
1 -68,73200655030 -52,20191261770

"1","2",9 donde el primer valor sea un numero autoincremental que se
incremente de a uno y no se repita, el segundo valor lo saco del primer
digito de las lineas que se van a empezar a leer y el ultimo valor es la
cantidad de registros que voy a leer hasta que se produzca un nuevo
cambio.

2 -68,71680655030 -52,20191261770
2 -68,71490655030 -52,20191261770
2 -68,71300655030 -52,20191261770
2 -68,71110655030 -52,20191261770
2 -68,70920655030 -52,20191261770
2 -68,70730655030 -52,20191261770
2 -68,70540655030 -52,20191261770
2 -68,70350655030 -52,20191261770
2 -68,70160655030 -52,20191261770

Gracias por todo
Saludos





"Francisco J. Rodríguez" escribió en el mensaje
news:%
Hola. No sé si habré entendido bien tu problema pero intento responderte.

Puedes leer la línea y guardarla en una cadena, y luego preguntar cuál es
el primer carácter de la cadena, que supongo que será lo que necesitas.
Algo así:

string registro = string.Empty;
StreamReader reader = new StreamReader("tuarchivo.txt");
while ( (registro = reader.ReadLine()) != null )
{
if (registro.Substring(0, 1) == "x")
{
// Hacer algo
}
}

A ver si puede servir. Un saludo.

Francisco J. Rodríguez

"Germán" escribió en el mensaje
news:
Hola a todos. Necesito una mano ya que estoy trabado. Tengo que recorrer
un archivo de texto preguntando por el valor de la primer posicion de
cada línea, en donde ese valor cambie tengo que agregar una linea con un
id autoincrementable que arranque de 1 y un 1 o un 2 dependiendo del
valor que lee de la primera columna. Estuve probando el StreamReader
para leer el archivo y lo abro bien, le asigno el contenido a un
richtext, pero no encuentro manera de leer el primer valor e iterar en
las demas lineas.
Si alguien me puede tirar una linea se lo agradecere mucho

Saludos a todos









Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida