Código:
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...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; }
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:
Gracias por su ayuda! 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; }