2009-12-31 11 views
0

Je veux faire une application graphique qui contient trois fonctions comme suit:Comment écrire des données dans un fichier via java?

  • Ajouter un enregistrement
  • Modifier un enregistrement
  • Supprimer un enregistrement

Un enregistrement contient deux champs - Nom et Profession

Il existe deux restrictions pour l'application

  • Vous ne pouvez pas utiliser la base de données pour stocker des informations. Vous devez utiliser un fichier plat.
  • Le fichier total ne doit pas être réécrit pour chaque opération d'ajout/suppression.

Donc, mes questions sont mentionnées ci-dessous:

Q1. Quel format de fichier serait le meilleur? (.xml ou .csv ou .txt ou tout autre)

Q2. Comment pouvons-nous effectuer l'opération d'ajout/suppression sans que le fichier entier soit réécrit?

+2

Ça sent le travail à moi. – inkedmn

+0

copie de http://stackoverflow.com/questions/181408/best-way-to-write-bytes-in-the-middle-of-a-file-in-java? – chburd

Répondre

0

Étant donné que le fichier entier ne doit pas être réécrit, je suggère d'utiliser RandomAccessFile qui vous permet de lire et d'écrire uniquement l'enregistrement que vous voulez. Pour le format de fichier, un fichier binaire, en utilisant la longueur fixe pour l'enregistrement: ex: Nom sur 20 caractères, Profession sur 30. Cela vous permettra d'utiliser la méthode seek() de RandomAccessFile pour accéder directement à vos données .

2

La deuxième partie de réponse à votre question ici: Best Way to Write Bytes in the Middle of a File in Java

En ce qui concerne le format - j'aller avec quelque chose d'aussi simple que possible. Vous ne voulez pas avoir à faire avec un tas de traitement de balisage, car en utilisant RandomAccessFile, vous allez directement à une position d'octet. Un format de style de largeur fixe serait bon, de sorte qu'en fonction du numéro d'enregistrement, vous pouvez calculer la position de départ d'un enregistrement ou d'un champ dans le fichier, sans avoir à tout lire dans le fichier. Les champs seraient alors rembourrés à la largeur fixe avec des espaces ou un autre caractère approprié.

Questions connexes