[Aporte] Copiador de bytes en un mismo medio

Iniciado por Debci, 29 Noviembre 2009, 19:53 PM

0 Miembros y 1 Visitante están viendo este tema.

Debci

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 (java) [Seleccionar]

package archivos;



import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author debci
*/
public class ManipulacionArchivos {
public static void main(String args[]) {
        try {
            // Se abre el fichero para lectura y escritura.
            RandomAccessFile fichero = new RandomAccessFile("/home/debci/Imágenes/love.jpg", "rw");
// Nos situamos en el byte 100 del fichero.
            int longitud = (int) fichero.length();
            fichero.seek(0);
            byte[] matrizBytes = new byte[longitud];
            for (int i = 0; i< fichero.length(); i++) {
                try {
                    fichero.seek(i);
                    matrizBytes[i] = fichero.readByte();

                } catch (IOException ex) {
                    Logger.getLogger(ManipulacionArchivos.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            for (int x=0; x < fichero.length();x++){
            System.out.println(matrizBytes[x]);
            }
            int doblePosicion = (int) (fichero.length() * 2);
            if(fichero.length() == 0){
                fichero.setLength(1);
            }
            fichero.setLength(doblePosicion);
            for(int o = 0; o < 100; o++) {
                //Bucle que copia bytes segun su posicion paralela con intervalos
                //de x2
            for(int y = 0; y < fichero.length() / 2 ; y++){
                if(fichero.length() == 0){
                    fichero.seek(0);
                    fichero.writeByte(98);
                }
                fichero.seek(fichero.length()/2 + y);
                fichero.writeByte(matrizBytes[y]);
                int progreso = (int) fichero.length() / 2;
                System.out.println("Quedan " + (progreso - y) + " bytes por copiar.");

            }

            }
           
        } catch (IOException ex) {
            Logger.getLogger(ManipulacionArchivos.class.getName()).log(Level.SEVERE, null, ex);
        }

}
}


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

egyware

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

Debci

Cita de: 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
Gracias jeje

Saludos