elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Optimización de Flujos(stream)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Optimización de Flujos(stream)  (Leído 2,763 veces)
ShotgunLogic

Desconectado Desconectado

Mensajes: 233


Claws so razor sharp


Ver Perfil
Optimización de Flujos(stream)
« en: 4 Junio 2011, 14:01 pm »

Hola a todos!

Estoy realizando un proyecto en Java que depende mucho de la velocidad de los flujos de bytes(si, ya se que Java es un lenguaje muy lento, pero es lo que hay :xD).

El caso es que estoy intentando guardar unos archivos, que pueden llegar a tener un tamaño muy grande(segun especifique el usuario). Estos archivos los estoy guardando con un FileOutputStream, mediante un array de bytes, pero este metodo no es muy efectivo debido a que, si tengo que guardar un archivo grande, voy a tener que guardar en memoria un array enorme(imaginaos que sean 4 gigas, como que no) y la memoria cascará. Observé que de todas formas este metodo es más rápido que ir pasando de byte en byte, e intenté simplemente declarar una constante e ir pasando array a array, con un bucle, pero al intentar guardar en el mismo archivo, en vez de guardar en los siguientes bytes lo que hace es machacarla y guardar encima.

¿Alguno tiene alguna solución? O una forma de optimizarlo, he mirado en oracle pero con la cantidad de clases que tiene Java no se yo como ponerlo bien...

Un saludo! ;-)


En línea

The clans are marching against the law, bagpipers play the tunes of war, death or glory I will find, rebellion on my mind.
Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Optimización de Flujos(stream)
« Respuesta #1 en: 4 Junio 2011, 16:15 pm »

No me hagas mucho caso porque la entrada salida de Java no la domino al pelo, pero quizás con el método:

write(byte[] b, int off, int len)
          Writes len bytes from the specified byte array starting at offset off to this file output stream.

puedas hacerlo no? Especificas el offset por el que te quedaste escribiendo anteriormente y sigues escribiendo. De todas formas te vuelvo a decir que no tengo mucha idea de entrada salida, así que si alguien puede contestarte algo mejor bienvenido sea xD.

Saludos.


En línea

ShotgunLogic

Desconectado Desconectado

Mensajes: 233


Claws so razor sharp


Ver Perfil
Re: Optimización de Flujos(stream)
« Respuesta #2 en: 4 Junio 2011, 16:32 pm »

No me hagas mucho caso porque la entrada salida de Java no la domino al pelo, pero quizás con el método:

write(byte[] b, int off, int len)
          Writes len bytes from the specified byte array starting at offset off to this file output stream.

puedas hacerlo no? Especificas el offset por el que te quedaste escribiendo anteriormente y sigues escribiendo. De todas formas te vuelvo a decir que no tengo mucha idea de entrada salida, así que si alguien puede contestarte algo mejor bienvenido sea xD.

Saludos.

Si si, de hecho es el que esoty usando, pero con un array muy grande la memoria casca(logico), pero sin embargo es el método más rápido. Por eso preguntaba cual sería la forma de optimizarlo(yo pretendia hacerlo mientras iba pasando byte[] de un tamaño razonable, pero guardan "encima" del mismo archivo y borran lo que tenía antes).

EDITO: Estoy gilipollas y te he leido mal, si, debe de ser ese metodo para guardar luego(es que ayer iba con algo de prisa y he mirao mal hasta lo de oracle..). De todas formas necesito un tamaño razonable para los bytes[] y no se cual ponerle.

Muchas gracias ^^
« Última modificación: 5 Junio 2011, 12:16 pm por ShotgunLogic » En línea

The clans are marching against the law, bagpipers play the tunes of war, death or glory I will find, rebellion on my mind.
ShotgunLogic

Desconectado Desconectado

Mensajes: 233


Claws so razor sharp


Ver Perfil
Re: Optimización de Flujos(stream)
« Respuesta #3 en: 9 Junio 2011, 22:14 pm »

Hago doble post por si a alguien le interesa:

He resuelto el problema con arrays de bytes(byte[]) de 15 mb, que me parece un tamaño razonable, tanto para móviles actuales como para ordenadores(si bien para ordenadores ahora mismo es un cagao). De esta manera van bastante rápidas las cosas pero no se peta la ram.

Un saludo! :laugh:
En línea

The clans are marching against the law, bagpipers play the tunes of war, death or glory I will find, rebellion on my mind.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
diferencias entre flujo de caracteres y flujos de bytes
Java
darkxxx 3 6,748 Último mensaje 4 Junio 2009, 11:13 am
por ~~
Paso de flujos por parametro
Programación C/C++
darkvidhack 3 1,732 Último mensaje 17 Mayo 2011, 22:48 pm
por satu
Diagrama de Flujos
Programación General
jelsir 2 1,365 Último mensaje 14 Octubre 2011, 06:40 am
por antraxita
ayuda con flujos de datos y archivos
Java
chelitodelgado 0 887 Último mensaje 4 Diciembre 2015, 04:30 am
por chelitodelgado
Flujos de control en C/C++
Programación C/C++
sukokiin 0 688 Último mensaje 21 Agosto 2019, 04:56 am
por sukokiin
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines