|
Página 1 de 1
|
Problema Leyendo Archivos Binarios Con Read
Autor |
Mensaje |
viejito
Usuario
Registrado: Diciembre 2014
Mensajes: 44
Edad: 61 Ubicación:
|
Problema Leyendo Archivos Binarios Con Read
Hola a todos!
Estoy haciendo una rutina que lee un archivo desde un directorio como un flujo de datos y lo escribe en otro directorio, usando open, read,write y close.
Originalmente pensé en usar copy, pero me pareció muy lento, la opción de usar los comandos del sistema operativo tampoco me pareció justo, así que decidí usar las herramientas de gambas.
De una forma muy rudimentaria dejo el código aquí
Hay mas cosas pero no vienen al caso ahora, el problema se presenta en la instrucción read que presenta un error END OF FILE.
Por lo que deduzco eof no está detectando el fin de archivo en el flujo de datos....
Eso si este archivo pp es un mp3 y lo reproduce sin problema.
Que puede estar pasando? Se me ocurrió algo muy loco. que el último bloque de 1024 bytes contenga la marca de fin de archivo, siendo ese bloque menor a 1024... Pero por eso digo que es muy loco. Lo cierto es que es la primera vez que lo veo.
Si alguien sabe que ocurre o ve el error, ya sabe .... gracias de antemano por iluminarme ....
Saludos
|
#1 Martes, 11 Agosto 2015, 16:08 |
|
|
viejito
Usuario
Registrado: Diciembre 2014
Mensajes: 44
Edad: 61 Ubicación:
|
Re: Problema Leyendo Archivos Binarios Con Read
Ok, hice una reconsideración del tamaño del flujo a ser leído y coloqué 1 byte por ciclo, eso será mas lento pero ahora no falla.
Sin embargo, sigo sin entender porque falla el read cuando se le indica que lea 1024 bytes por ciclo...
Será cierto lo que había pensado sobre el último bloque de flujo leido??
|
#2 Martes, 11 Agosto 2015, 16:21 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Problema Leyendo Archivos Binarios Con Read
viejito:
Citar: que el último bloque de 1024 bytes contenga la marca de fin de archivo, siendo ese bloque menor a 1024
Creo que eso es lo que pasa,
read #flujorigen, contenido, 1024
es que fuerzas a leer "trozos" de 1024 bits, y si el ultimo es menor... pues sobrepasas el final.
Lo que podrias hacer es averiguar el tamaño del archivo, y dividirlo en 1024, y completar los ciclos completos, dejando para el final el trocito que falte del archivo
por ejemplo:
el fichero tiene 3024 bytes de tamaño, seria repetir el ciclo de lectura 1024, 2 veces, y luego un ciclo de lectura del resto (3024-1024*2)
|
#3 Martes, 11 Agosto 2015, 20:25 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Problema Leyendo Archivos Binarios Con Read
es que fuerzas a leer "trozos" de 1024 bits, y si el ultimo es menor... pues sobrepasas el final.
No hay nada que añadir a lo que ha dicho el nuestro amigo jsbsan, sólo querría proponer una otra solución:
dim rutaorigen, rutadestino as string
rutaorigen=user.home & "/Escritorio/pp"
rutadestino=user.home & "/Escritorio/prueba/pp"
File.Save(rutadestino, File.Load(rutaorigen))
|
#4 Martes, 11 Agosto 2015, 23:11 |
|
|
viejito
Usuario
Registrado: Diciembre 2014
Mensajes: 44
Edad: 61 Ubicación:
|
Re: Problema Leyendo Archivos Binarios Con Read
Jsbsan,Vuott, tus soluciones funcionan bien.
Ahora quisiera implementar si es que resulta posible una barra de progreso. La idea es que se trata de una rutina de respaldo, sé que existen muchas soluciones que puedo implementar, he estado leyendo al respecto aquí y en la mayoría de blogs sobre gambas, wikis y demás. Leí una respuesta sobre hilos y me enteré que eso no está contemplado en gambas, al parecer, eso es una lástima.
Por otra parte, hablando totalmente claro, haciendo comparaciones con visual basic, en tiempos de respuesta gambas deja en ridículo a visual basic. ("comentario xenofobo", jajaja), lo cierto es que si puedo mover archivos tan rápido, no tiene caso usar una barra de progreso y de acuerdo a mi experiencia sobre el tema, al usuario le interesa mas levantarse e irse al apretar el botón respaldar.
Lo que si me gustaría saber es como se comporta la solución de vuott, moviendo archivos grandes de varios gigabytes. Otro punto importante es la integridad de datos, ya que se trata de respaldar una base de datos.
|
#5 Miercoles, 12 Agosto 2015, 09:01 |
|
|
|
Temas parecidos
Temas parecidos
Tema |
Autor |
Foro |
Respuestas |
último mensaje |
|
Cargar Archivos Binarios En Una Base De Da...
|
shordi |
Aplicaciones/Fragmentos de Código |
3 |
Jueves, 21 Agosto 2014, 09:17 shordi |
|
¿como Comparar Dos Archivos De Imagen Bi...
|
jsbsan |
General |
7 |
Domingo, 18 Diciembre 2016, 17:17 tincho |
|
Archivos, Seek, Read Etc.
|
tincho |
Aplicaciones/Fragmentos de Código |
9 |
Viernes, 09 Noviembre 2018, 23:01 tincho |
|
Solicitud De Ejemplo Y Tutorial Para Leer ...
|
tincho |
Aplicaciones/Fragmentos de Código |
21 |
Miercoles, 14 Noviembre 2018, 23:20 tincho |
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|