Java RandomAccessFile spécifie l'emplacement pour implémenter la lecture et l'écriture de fichiers
RandomAccessSfile appartient à la classe de lecture aléatoire. Il peut faire fonctionner le contenu du fichier lui-même et peut lire et écrire du contenu à l'emplacement spécifié du fichier, ce qui est très pratique dans de nombreux cas.
RandomAccessFile est utilisé pour accéder aux fichiers qui contiennent des enregistrements de données. Vous pouvez utiliser la méthode Seek () pour accéder aux enregistrements et lire et écrire. La taille de ces enregistrements ne doit pas être la même; Cependant, leur taille et leur emplacement doivent être connus. Cependant, cette classe est limitée aux fichiers de fonctionnement.
RandomAccessFile n'appartient pas aux classes InputStream et OutputStream. En fait, en plus d'implémenter les interfaces Datainput et DataOutput (DatainPutStream et DataOutputStream implémentent également ces deux interfaces), cela n'a rien à voir avec ces deux classes et n'utilise même aucune fonction qui existe déjà dans les classes InputStream et OutputStream; Il s'agit d'une classe complètement indépendante, et toutes les méthodes (appartiennent principalement à elle-même) sont écrites à partir de zéro. Cela peut être dû au fait que RandomAccessFile peut se déplacer dans le fichier, donc son comportement est quelque peu fondamentalement différent des autres classes d'E / S. En bref, il s'agit d'une classe distincte qui hérite directement de l'objet.
Fondamentalement, la façon de travail de RandomAccessFile est de combiner DatainputStream et DataOutputStream, et d'ajouter certaines de ses propres méthodes, telles que GetFilePointer () pour le positionnement, Seek () pour se déplacer dans le fichier et déterminer la longueur () pour la taille du fichier et les skipbytes () pour Skip. De plus, son constructeur a également un paramètre qui indique d'ouvrir le fichier en mode en lecture seule ("r") ou en mode lecture-écriture ("RW") (exactement le même que le fopen () de C). Il ne prend pas en charge les fichiers d'écriture uniquement.
Seul RandomAccessFile a une méthode de recherche de recherche, et cette méthode ne s'applique qu'aux fichiers. BufferedInputStream a une méthode Mark (), que vous pouvez utiliser pour définir la marque (enregistrer le résultat dans une variable interne), puis appeler reset () pour revenir à cette position, mais sa fonction est trop faible et pas très pratique.
Exemple de code:
Importer java.io.ioException; import java.io.randomaccessfile; / ** * randomaccessfile appartient à une classe de lecture aléatoire et peut exploiter le contenu du fichier lui-même directement et au hasard, c'est-à-dire que vous pouvez spécifier l'emplacement * pour lire et écrire du contenu * @Author Andy * * / public classe RandomAccessFileSt {public static Void Main (String args []) throws ioexest {); lire(); } public static void write () lève ioException {// Accédez au fichier d'une manière en lecture-écriture randomaccessfile raf = new randomaccessfile ("d: //test.txt", "rw"); raf.writeBytes ("Hello World!"); raf.writeboolean (true); RAF.WriteInt (30); raf.writedouble (3,56); raf.close (); } public static void read () lève ioException {randomaccessfile raf = new randomaccessfile ("d: //test.txt", "r"); raf.seek (12); // définit la position du pointeur boolean booleanvalue = raf.readboolean (); int intValue = raf.readInt (); Double doubleValue = raf.readouble (); raf.seek (0); // définit la position du pointeur sur le début du fichier octet [] octets = new octet [12]; for (int i = 0; i <bytes.length; i ++) bytes [i] = raf.readbyte (); // lire un octet à la fois et l'attribuer à bytes [i] string stringValue = new String (bytes); raf.skipbytes (1); // sauter un octet octet int intValue2 = raf.readInt (); raf.close (); System.out.println (booleanvalue); System.out.println (intValue); System.out.println (doubleValue); System.out.println (StringValue); System.out.println (IntValue2); }}Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!