Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Debci en 29 Noviembre 2009, 19:53 pm



Título: [Aporte] Copiador de bytes en un mismo medio
Publicado por: Debci en 29 Noviembre 2009, 19:53 pm
Hola a todos, hoy investigando y dando uso de la logica, he llegado a la siguiente conclusion sobre manipulacion directa de bytes:
ES como interepretar una hoja de calculo.

Y aqui el codigo fruto de mi mini-investigacion:

Código
  1. package archivos;
  2.  
  3.  
  4.  
  5. import java.io.FileNotFoundException;
  6. import java.io.IOException;
  7. import java.io.RandomAccessFile;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10.  
  11. /**
  12.  *
  13.  * @author debci
  14.  */
  15. public class ManipulacionArchivos {
  16. public static void main(String args[]) {
  17.        try {
  18.            // Se abre el fichero para lectura y escritura.
  19.            RandomAccessFile fichero = new RandomAccessFile("/home/debci/Imágenes/love.jpg", "rw");
  20. // Nos situamos en el byte 100 del fichero.
  21.            int longitud = (int) fichero.length();
  22.            fichero.seek(0);
  23.            byte[] matrizBytes = new byte[longitud];
  24.            for (int i = 0; i< fichero.length(); i++) {
  25.                try {
  26.                    fichero.seek(i);
  27.                    matrizBytes[i] = fichero.readByte();
  28.  
  29.                } catch (IOException ex) {
  30.                    Logger.getLogger(ManipulacionArchivos.class.getName()).log(Level.SEVERE, null, ex);
  31.                }
  32.            }
  33.            for (int x=0; x < fichero.length();x++){
  34.            System.out.println(matrizBytes[x]);
  35.            }
  36.            int doblePosicion = (int) (fichero.length() * 2);
  37.            if(fichero.length() == 0){
  38.                fichero.setLength(1);
  39.            }
  40.            fichero.setLength(doblePosicion);
  41.            for(int o = 0; o < 100; o++) {
  42.                //Bucle que copia bytes segun su posicion paralela con intervalos
  43.                //de x2
  44.            for(int y = 0; y < fichero.length() / 2 ; y++){
  45.                if(fichero.length() == 0){
  46.                    fichero.seek(0);
  47.                    fichero.writeByte(98);
  48.                }
  49.                fichero.seek(fichero.length()/2 + y);
  50.                fichero.writeByte(matrizBytes[y]);
  51.                int progreso = (int) fichero.length() / 2;
  52.                System.out.println("Quedan " + (progreso - y) + " bytes por copiar.");
  53.  
  54.            }
  55.  
  56.            }
  57.  
  58.        } catch (IOException ex) {
  59.            Logger.getLogger(ManipulacionArchivos.class.getName()).log(Level.SEVERE, null, ex);
  60.        }
  61.  
  62. }
  63. }
  64.  

Creo que no esta mal para haberlo sacado usando solamente mi logica y una duda que consulte en el foro.

Vereis que el algoritmo es rebuscado de coj**** pero servira para que muchos entiendan como funciona esto.

Saludos


Título: Re: [Aporte] Copiador de bytes en un mismo medio
Publicado por: egyware en 29 Noviembre 2009, 20:40 pm
Me costo enterderlo un poco, pero lo que hace es duplicarse en si mismo.
Bueno como te dije en el post anterior puedes usar otras funciones y tu codigo se simplificara más
Excelente, sigue experimentando  ;D y aprenderás.
Saludos


Título: Re: [Aporte] Copiador de bytes en un mismo medio
Publicado por: Debci en 29 Noviembre 2009, 20:44 pm
Me costo enterderlo un poco, pero lo que hace es duplicarse en si mismo.
Bueno como te dije en el post anterior puedes usar otras funciones y tu codigo se simplificara más
Excelente, sigue experimentando  ;D y aprenderás.
Saludos
Gracias jeje

Saludos