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

#6 Jose Escrich
11/05/2007 - 06:41 | Informe spam
German, lee todo tu archivo y metelo en un dataset, create una tabla y tira
alli todos los datos tabulados.
Luego lee esa tabla aplicando la lógica que indicas y agregando rows donde
quieras, luego lees nuevemente el dataset
y te reneras tu file.

saludos.

José Escrich
http://latincoder.com


"Francisco J. Rodríguez" wrote in message
news:uUoAa%
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
#7 Hernan
11/05/2007 - 10:58 | Informe spam
6MB es nada. No te hace falta una BD.
Lo puedes leer todo en memoria, llevarlo a un ArrayList,
Hashtable o lo que mejor se adapte a tus necesidades y
uego escribir el archivo de texto de nuevo.
Además, ten en cuenta que sobre un archivo de texto no se puede
"insertar" nada.

On 9 mayo, 19:43, "German" wrote:
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 mensajenews:%

> 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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida