E 'possibile impostare una specifica di byte in un back RandomAccessFile per nulla?

StackOverflow https://stackoverflow.com/questions/4406691

  •  25-09-2019
  •  | 
  •  

Domanda

Origianlly, quando ho creato il RandomAccessFile, ho saltato su alcuni byte in modo da quelli rimasti come nullo, ma ora ho bisogno di eliminare alcuni dei byte che ho scritto. In questo momento, quello che sto facendo è sovrascrivere la posizione con uno spazio, ma c'è un modo per impostare di nuovo a vuoto?

EDIT:. Dal momento che ha per contenere un valore, mi piacerebbe sapere come impostare di nuovo al valore originale che viene assegnato per impostazione predefinita quando viene saltato

È stato utile?

Soluzione

Un file non può contenere un byte "vuoto". Ogni byte del file deve avere un valore compreso tra 0 e 255.

Se si vuole "cancellare" tutti i byte dopo un certo punto, si potrebbe usare RandomAccessFile.setLength che tronca il file.


Per quanto riguarda il tuo commento: Se si desidera impostare alcuni byte di nuovo esso di valore originale, vi consiglio di incapsulare un RandomAccessFile nella propria classe con una mappa da indice per il valore di byte originale, che si aggiorna in ogni chiamata a write. Questa sottoclasse potrebbe quindi fornire un metodo restore(int i) che ripristina il valore del byte di indice i, cercando il valore originale nella mappa.

Altri suggerimenti

E 'estremamente chiaro che cosa si sta cercando di fare, ma non si può "eliminare" byte dall'inizio o mezzo di un file. Si può generalmente troncare di un file, ma non è possibile rimuovere i bit a partire dalla metà -. Che normalmente si crea un nuovo file, solo la copia dei dati che si desidera, e poi eventualmente rinominare i file in modo appropriato

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top