Est-il possible de définir un octet spécifique dans un RandomAccessFile retour à null?

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

  •  25-09-2019
  •  | 
  •  

Question

origianlly, quand je créé le RandomAccessFile, je sautais sur quelques octets de sorte que ceux restés comme nuls, mais maintenant je dois supprimer certains des octets que j'ai écrit. En ce moment, ce que je fais est l'emplacement avec écraser un espace, mais est-il possible de le remettre à vide?

EDIT:. Comme il doit contenir une valeur, je voudrais savoir comment il remis à la valeur d'origine qui lui est attribué par défaut quand il est sauté

Était-ce utile?

La solution

Un fichier ne peut pas contenir un octet « vide ». Chaque octet dans le fichier doit avoir une valeur entre 0 et 255.

Si vous voulez « effacer » tous les octets après un certain point, vous pouvez utiliser RandomAccessFile.setLength qui tronque le fichier.


En ce qui concerne votre commentaire: Si vous voulez définir quelques octets de retour à sa valeur d'origine, je vous suggère de encapsulent un RandomAccessFile dans votre propre classe avec une carte de l'index à la valeur d'octet d'origine, que vous mettez à jour dans chaque appel à write. Cette sous-classe pourrait alors fournir une restore(int i) méthode qui restaure la valeur de l'octet à l'index i en recherchant la valeur initiale de la carte.

Autres conseils

Il est extrêmement difficile de ce que vous essayez de faire, mais vous ne pouvez pas octets « supprimer » dès le début ou au milieu d'un fichier. Vous pouvez généralement troncature un fichier, mais vous ne pouvez pas supprimer les bits du milieu -. Que vous auriez normalement créer un nouveau fichier, la copie que les données que vous voulez, puis éventuellement renommer les fichiers de manière appropriée

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top