2009-11-25 5 views

Répondre

1

L'enregistrement binaire et le chargement sont un moyen d'enregistrer des fichiers. L'autre façon est l'enregistrement et le chargement de texte. La sauvegarde de texte est ce que vous connaissez peut-être - les fichiers que vous enregistrez sont composés de lettres et de chiffres (texte normal). L'enregistrement et le chargement binaires stockent des données qui ne sont pas lisibles par l'homme comme des lettres et des chiffres, mais c'est une représentation plus "native" de données comme des nombres (plutôt que d'enregistrer "7" pour le numéro 7, 00000111 le binaire représentation du nombre 7).

Pour les devoirs de votre système bancaire, vous pouvez utiliser l'enregistrement et le chargement binaires pour stocker le montant de l'argent.

2

Vous aurez besoin d'être un peu plus précis que cela, mais en général cela signifie lire et écrire des valeurs dans un fichier binaire. Selon votre problème de devoirs, le format réel du fichier peut être défini ou vous devrez décider vous-même du format. Cela signifie généralement un ordre spécifique de types spécifiques. Par exemple, le format de fichier peut être:

  • Un entier, le nombre de comptes dans ce fichier
  • Un entier, le numéro de compte du premier compte
  • Une longue, le montant d'argent dans le compte (en cents)
  • un entier, le nombre de caractères dans le nom du titulaire du compte
  • plusieurs caractères représentant le nom du titulaire du compte
  • répétition, en commençant par le numéro de compte du deuxième compte
  • etc

C'est un peu trop simpliste, bien sûr. En Java, les classes DataInputStream et DataOutputStream vous permettent de commencer (relativement) simplement à lire et à écrire des flux d'entrée et de sortie (probablement un fichier, dans votre cas).

2

Comme la partie "quoi" a déjà été répondue, je vais me concentrer sur le "quand" de votre question.

Les formats binaires sont généralement utilisés lorsque vous avez besoin d'un stockage efficace et d'un traitement des données plus rapide. Ils sont plus efficaces sur le plan spatial car la représentation binaire est intrinsèquement plus compacte. Comme les formats binaires ont généralement une structure, vous pouvez "naviguer" dans leur contenu facilement et rapidement. Supposons que vous ayez un titulaire de compte nommé "John Doe", avec le compte "123-45678-34567", la carte client "1234-5678-1234-5678" et deux comptes: économies (12 456,78 $) et vérification (1 234,56 $). Si vous avez base de données comme un simple fichier texte, vous pouvez enregistrer les données comme ceci:

"John Doe" 123-45678-34567 1234-5678-1234-5678 12,456.78 1,234.56\n 

Toutes les données sont une ligne de texte dans le fichier de base de données (le « \ n » est la ligne de caractère de rupture). Il est facile pour un humain de comprendre et même de modifier sans problème. Mais pour votre programme, vous devez analyser chaque ligne pour la comprendre (par exemple: charger combien d'argent il y a dans le compte d'épargne), puis faire l'opération dont vous avez besoin (par exemple: mettre à jour les économies totales), la convertir au format textuel et sauvegardez à nouveau. Maintenant, imaginez si vous avez des milliers de comptes et des millions d'opérations quotidiennes.Il est clair que vous passerez beaucoup de temps à analyser le texte en binaire (pour que l'ordinateur puisse réellement faire quelque chose), puis à convertir le texte en texte et à l'enregistrer sur le disque. La navigation dans ce fichier (recherche du compte de "John Doe") prend également beaucoup de temps.

Pour un fichier binaire, vous avez besoin d'une structure similaire, mais vous devez également planifier un peu plus. Pas tous les clients auront la même longueur de nom ou la même quantité d'argent, donc vous devez définir des limites raisonnables --- après tout, vous ne voulez pas perdre de l'espace en réservant plusieurs caractères pour le nom (par exemple, 256), où 32 caractères seraient généralement suffisants. Vous devez également avoir une notion de plage pour les champs numériques. Par souci de simplicité, supposons que les entiers 64 bits (le type primitif long de Java) sont suffisants pour tous vos besoins numériques (voir this link pour plus d'informations sur les plages). Dans ce cas, chaque enregistrement pour stocker des comptes dans votre banque de devoirs comporte 5 champs:

  1. Nom du titulaire du compte, une chaîne de 30 caractères.
  2. Numéro de compte en tant que type entier long.
  3. Numéro de carte de débit comme un long.
  4. Le montant du compte d'épargne est long.
  5. Vérification du montant du compte, également en tant que long.

Dans ce cas, chaque enregistrement a une longueur fixe de 32 + 4 * 8 = 64 octets. Pour cet exemple, c'est presque la même chose que pour la ligne unique ci-dessus, mais gardez à l'esprit que c'est un scénario très simpliste: une vraie banque aura beaucoup plus d'informations détaillées, y compris l'historique du compte et ainsi de suite. Le point ici est que vous devriez être capable de voir que la navigation dans un fichier binaire comme celui-ci est beaucoup plus simple: vous chargez simplement un enregistrement brut à partir d'une position spécifique dans le fichier, et vous avez terminé --- aucune analyse de texte requise. Si vous gardez le fichier trié par nom de titulaire de compte, vous pouvez rechercher et récupérer un enregistrement en O (log (n)), au lieu de O (n) si non trié ou un fichier texte (sauf si vous utilisez des lignes de longueur fixe). Une fois que vous avez terminé la mise à jour d'un enregistrement, vous le sauvegardez simplement sur le disque. Au fur et à mesure que votre format binaire progresse, vous pouvez inclure des informations résumées à un endroit spécifique du fichier, généralement le premier octet du fichier. Cet enregistrement spécial est l'en-tête, et outre la description d'informations utiles (par exemple: combien de comptes y a-t-il dans le fichier), l'en-tête peut contenir des informations qui permettent de reconnaître le fichier jeton d'identification dans un endroit (à nouveau) spécifique.

Les fichiers binaires sont plus faciles à gérer que ce message pourrait l'être, alors je vous suggère de regarder quelques exemples pour comprendre comment faire cela en Java (par exemple this other link). Il y en a beaucoup d'autres, bien sûr.