La création et la lecture à partir d'un type de fichier personnalisé en Java
Je suis de la création d'un programme d'installation et il y a certains fichiers de ressources (.xmls, .les fichiers zip, un .fichier jar, etc) qui doivent être lues lors de l'installation, mais je tiens à les emballer dans un fichier personnalisé (c'est à dire, une .fichier dat) de sorte que lorsque distribués, les utilisateurs ne reçoivent pas de déconner avec eux trop. Le problème est que le programme d'installation doit être écrit en Java et je n'ai jamais fait ce genre de chose dans n'importe quel langage de programmation. Est-il même possible? Si oui, comment puis-je emporter dans une manière qui peut être lu par mon application Java par la suite et comment puis-je rendre mon application Java de le lire?
Vous devez vous connecter pour publier un commentaire.
L'extension ont généralement très peu à voir avec la façon dont le fichier est interprété.
Si vous voulez avoir juste
config.dat
au lieu deconfig.xml
il vous suffit de renommer le fichier. (Vous devez généralement donner un xml-parser unInputStream
ou unReader
comme entrée, qui peut lire n'importe quel fichier, quelle que soit l'extension)Si le problème que vous décrivez est d'environ combinant plusieurs fichiers, (.zip, .jar, etc) en un seul .dat fichier, vous pouvez par exemple zip ensemble, et le nom du fichier zip avec un .dat extension. Java a un bon support pour les fichiers zip et peut gérer le fichier zip, indépendamment du nom de fichier /extension.
Il ya beaucoup de questions que vous devez répondre pour vous-même sur les exigences de ce type de fichier. Est-il besoin d'être comprimé? Chiffré? Il a besoin de l'appui d'accès aléatoire lecture, ou est-ce stream-lecture assez bon?
J'ai peut-être tort, mais je ne pense pas que c'est ce que vous demandez dans cette question. Si je suis en train de lire correctement, je pense que vous vous posez la question "comment puis-je lire & écriture de fichiers arbitraires de données?"
Donc, c'est la question que je vais répondre. Mise à jour de votre question, si ce n'est pas tout à fait ce que vous cherchez.
Personnalisés types de fichiers peuvent facilement être mises en œuvre à l'aide de la DataInputStream et DataOutputStream classes. Il vous permettra de lire & écrire primitives (boolean, char, byte, int, long, float, double) pour le flux. Il y a aussi quelques méthodes pratiques pour la lecture & écrit codé en UTF-8 Cordes, byte-tableaux, et quelques autres goodies.
Nous allons commencer.
Pour les besoins de la discussion, supposons que toutes mes données sont des éléments de tableaux d'octets. Et chacun d'eux a un nom. Donc, mon type de fichier peut être modélisé logiquement comme un
Map<String, byte[]>
. J'aimerais mettre en œuvre mon type de fichier personnalisé lecteur/enregistreur de classe comme ceci:L'idée de base est que vous pouvez écrire toutes les données d'un flux de sortie (et de le lire en arrière de nouveau) si vous pouvez vous le représenter ces données comme une combinaison de primitives. Les tableaux (ou d'autres collections) peut être préfixé avec leur longueur, comme je l'ai fait ici. Ou vous pouvez éviter d'écrire le préfixe de longueur si vous mettez un TERMINUS sentinelle à la fin (un peu comme null chaînes de caractères).
Je toujours utilisation de ce type d'installation lorsque j'mettre en œuvre un type de fichier personnalisé codec, avec e /s de fichiers des méthodes de déléguer vers le bas dans les cours d'eau IO méthodes. Habituellement, je l'ai découvert plus tard que l'objet que je suis en train de lire & l'écriture de ce flux pourrait être tout aussi facilement écrite dans certaines grandes & plus complexes fichier.
Donc je pourrais avoir un
SuperFancyCodec
pour la lecture/écriture des données pour l'ensemble de mon système, et qu'il appelle dans monTinySpecialPurposeCodec
. Tant que le flux de la lecture & méthodes d'écriture sont publiques, alors je peux assembler de nouveaux types de fichiers à l'aide d'un composant de méthode axée sur la.Lors de la création/lecture de fichiers en Java (ou autre chose), l'extension du fichier n'est pas strictement tyed à la structure du fichier de données. Si je voulais, je pourrais faire une fichiers XML
file.gweebz
. Les OS et les applications ne sais pas quoi faire avec elle, mais une fois ouvert, il serait clair que c'est du XML.Cela étant dit, il est souvent bon de suivre les conventions déjà établies et généralement
.dat
fichiers sont des fichiers au format binaire. Vous pouvez utiliser .dat pour ce que vous voulez, mais soyez averti que certains utilisateurs peuvent avoir des OS liaisons pour le type de fichier et de cliquer sur votre fichier peut entraîner différentes que prévu comportement sur leurs systèmes.Quant à la façon de le faire en Java. Attrapant une poignée de fichier en Java est facile...
C'est aussi simple que cela et vous pouvez le nommer comme vous le souhaitez. Vous aurez besoin d'autres classes d'écrire et de lire à partir du fichier ou de faire de la compression, mais je suppose que vous savez comment le faire. Si pas, ce site aura la réponse.