none
Dividir Un Archivo TXT en Varios archivos con VB6.0 RRS feed

  • Pregunta

  • Hola amigos, veran.. tengo un problemilla.. tengo un archivo txt que pesa 16,000 KB

    y lo que deseo saber como puedo dividir este archivo en archivos maximos de 3000 KB, 

    sin peder los datos ahi almacenados

    o en todo caso como saber cuantas lineas ingresas en el txt para que no supere los 3000 bk de tamaño

    gracias de antemano

    jueves, 13 de marzo de 2014 3:44

Respuestas

  • Hola:

    Si las líneas son de ancho fijo, puedes calcular cuantas líneas 'caben' en 3000kb:

    Dim cLineaDeAnchoFijo As string 
    
    cLineaDeAnchoFijo = ' Lees la primera línea del fichero de texto.
    
    nLineas = INT((3 * 1024 * 1024) / (Len(cLineaDeAnchoFijo) + 2))
    ' Nota: El +2 es para contar los caracteres de retorno de fila y de carro.
    
    'Y ahora lees cada nLineas y las vas guardando en ficheros.

    Sino, tendrás que ir procesando línea a línea, en pseudocódigo:

    Dim cLinea As String, cFichero3000 As String
    
    Do While NOT EOF 
       cLinea = 'Leer Línea Del Fichero
       If Len(cFichero3000) + Len(cLinea) > 3*1024*1024 Then
          ' Escribir en un fichero el texto de cFichero3000
          cFichero3000 = cLinea   ' Empezamos un nuevo fichero
       Else   
          cFichero3000 = cFichero3000 & vbcrlf & cLinea
       End If
    
    Loop ' Todo esto en un bucle leyendo líneas del fichero principal

    Espero que te sirva

    Saludos

    • Marcado como respuesta arucoba viernes, 14 de marzo de 2014 21:50
    jueves, 13 de marzo de 2014 8:41

Todas las respuestas

  • Tendrás que controlar el nº de caracteres que incluyes en el archivo. Cada carácter ocupa 1 Byte, por lo que podrás incluir unos 16.000.000 caracteres. Ten en cuenta los caracteres de fin de linea.

    También podrías ir comprobando el tamaño del archivo con GetFileInfo.


    Saludos, Javier J

    jueves, 13 de marzo de 2014 8:19
  • Hola:

    Si las líneas son de ancho fijo, puedes calcular cuantas líneas 'caben' en 3000kb:

    Dim cLineaDeAnchoFijo As string 
    
    cLineaDeAnchoFijo = ' Lees la primera línea del fichero de texto.
    
    nLineas = INT((3 * 1024 * 1024) / (Len(cLineaDeAnchoFijo) + 2))
    ' Nota: El +2 es para contar los caracteres de retorno de fila y de carro.
    
    'Y ahora lees cada nLineas y las vas guardando en ficheros.

    Sino, tendrás que ir procesando línea a línea, en pseudocódigo:

    Dim cLinea As String, cFichero3000 As String
    
    Do While NOT EOF 
       cLinea = 'Leer Línea Del Fichero
       If Len(cFichero3000) + Len(cLinea) > 3*1024*1024 Then
          ' Escribir en un fichero el texto de cFichero3000
          cFichero3000 = cLinea   ' Empezamos un nuevo fichero
       Else   
          cFichero3000 = cFichero3000 & vbcrlf & cLinea
       End If
    
    Loop ' Todo esto en un bucle leyendo líneas del fichero principal

    Espero que te sirva

    Saludos

    • Marcado como respuesta arucoba viernes, 14 de marzo de 2014 21:50
    jueves, 13 de marzo de 2014 8:41
  • excelente la idea amigo LG DES, me da una idea como poder solucionarlo

    claro que el problema ahora seria que  como no todas las lineas de texto son del mismo 

    tamaño, pero por lo menos podria sacar algún promedio y saber cuantas lineas

    alcanzaran para no pasarme de los 3000kb

    viernes, 14 de marzo de 2014 21:50