Foros del Web » Programación para mayores de 30 ;) » Java »

2 Dudas, uso de write(byte[],int off, int len) crear file r

Estas en el tema de 2 Dudas, uso de write(byte[],int off, int len) crear file r en el foro de Java en Foros del Web. Hola que tal, tengo 2 dudas... Código: public int escribir (byte nombreArchivo[], byte buffer[], int cant, int posBuffer){ int edo=0; try{ String nom=""; RandomAccessFile archivo=null; ...
  #1 (permalink)  
Antiguo 14/04/2010, 13:32
Avatar de cotopaxi  
Fecha de Ingreso: noviembre-2009
Ubicación: Guadalajara, Jalisco
Mensajes: 20
Antigüedad: 14 años, 5 meses
Puntos: 1
2 Dudas, uso de write(byte[],int off, int len) crear file r

Hola que tal, tengo 2 dudas...

Código:
public int escribir (byte nombreArchivo[], byte buffer[], int cant, int posBuffer){
    int edo=0;
    try{
    String nom="";
    RandomAccessFile archivo=null;
    File arch=null;
    nom=new String(nombreArchivo,0,nombreArchivo.length);
    arch=new File(nom+".txt");
    if(arch.exists()){
        System.out.print("Se editará el fichero "+nom);
        archivo=new RandomAccessFile(nom+".txt","rw");
        archivo.seek(archivo.length());//nos ubicamos siempre al final del archivo para no reescribir
        archivo.write(buffer,posBuffer,cant);//Escribe "can" bytes del arreglo de bytes "buffer" iniciando desde "posBuffer" del buffer. NO SE PUEDE POSBUFFER 
                    }
    else edo=-1;
    archivo.close();
    }catch(FileNotFoundException f){edo=-1;}
    catch(NullPointerException f){edo=-1;}
    catch (IOException e) {edo=-2;}
    return edo;
}
Por alguna razón no puedo darle un valor a posBuffer, salvo 0, que sería escribir desde el inicio. Tengo días viendo ejemplos en internet y todos se limitan a decir eso, que escribe desde "n" posición y nada, si doy un número positivo me marca un error (excepción) de outofbounds...

Otra duda que tengo es, ¿se puede crear un archivo de sólo lectura, pero sin contener nada (es decir en blanco o vacío)? tengo esta función pero me tira la excepción de que el archivo no existe (es decir sería el modo de acceso el que le asignaría...no?)

Código:
public int crear(byte nombreArchivo[],int modo)throws IOException{
    int edo=0;String mod;
    if (modo==1)mod="r";
    else mod="rw";
    try{
    String nom="";
    RandomAccessFile archivo=null;
    nom=new String(nombreArchivo,0,nombreArchivo.length);
    System.out.print("Se creará un archivo llamado "+nom);
    archivo=new RandomAccessFile(nom+".txt",mod);
    archivo.close();
    }catch(FileNotFoundException f){edo=-1;}
    catch (IOException e) {edo=-2;}
    catch(IndexOutOfBoundsException e){edo=-2;}
    return edo;
}
Gracias por su ayuda!
  #2 (permalink)  
Antiguo 14/04/2010, 16:35
Avatar de cotopaxi  
Fecha de Ingreso: noviembre-2009
Ubicación: Guadalajara, Jalisco
Mensajes: 20
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: 2 Dudas, uso de write(byte[],int off, int len) crear file r

Bueno leyendo más vi éste enlace http://www.cafeaulait.org/questions/06181999.html

donde vi que para usar la función, uno debe poner como off la posición donde inicia a leer y el final debe ser la len-off...

Código:
 if (data == null) {
      throw new NullPointerException();
    } 
    else if ((offset < 0) || (offset > data.length) || (length < 0) 
     || ((offset + length) > data.length) || ((offset + length) < 0)) {
      throw new ArrayIndexOutOfBoundsException();
    } 
    else if (length == 0) {
      return 0;
    }
lo que quiere decir que si tenemos un arreglo de bytes de tamaño 10, y queremos que lea de la posición 3 hasta el final (10) debemos poner

Código:
write(byte[],3,length-3)
yo no efectuaba dicha resta, por eso tenía el error.

El que sí todavía no consigo nada es el de crear un archivo y que sea de sólo lectura...

Gracias y saludos, espero me ayuden con lo último!

Etiquetas: file, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:32.