Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2010, 13:32
Avatar de cotopaxi
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!