allreader
Messages postés3Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention25 janvier 2005
-
24 janv. 2005 à 20:53
allreader
Messages postés3Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention25 janvier 2005
-
25 janv. 2005 à 20:38
Bonjour,
Programmeur Java, j'ai besoin pour une application d'utiliser les possibilités d'IO de l'API Java.
Pour planter le décor, disons que les besoins de mon application se rapprochent de ceux d'un traitement de texte classique : affichage du texte, recherche rapide et utilisation du texte pour des algorithmes caractérisés par de nombreux accès aux données, insertion/suppression de parties, sauvegardes régulières, etc... Les opérations se font sur des fichiers d'au plus quelques centaines de ko en texte pur...
Je me demandais donc : quelle est la manière la plus appropriée ET surtout la plus rapide de travailler sur un fichier en Java pour une telle application? Dois-je préférer java.nio ou java.io?
J'entrevois plusieurs possibilités :
-Utilisation directe du fichier (rien dans la mémoire, tout sur le disque)
Prob : trop d'accès disques, à proscrire pour une consultation rapide
-Mappage du fichier en mémoire grace aux Channel de java.nio
-Création d'une "énorme" String contenant le texte qui y est chargé au début
Prob : potentiellement lent, la String n'étant pas la panacée en matière de rapidité; lourdeur au chargement et lors des sauvegardes régulières entrainant un ralentissement de l'application.
-Idem avec un tableau de Char
Prob : mieux pour la rapidité des opérations, mais tout aussi lourd pour les sauvegardes et tout simplement horrible pour la maintenance (ajout/suppresion de caractères obligent à reconstruire le tableau régulièrement lorqu'il devient trop petit)
-Idem avec une structure chainée (liste) pour faciliter la maintenance
Prob : lourd pour la mémoire, meme prob lors du chargement/sauvegarde
Quelqu'un pourrait-il me conseiller? C-à-d, en bref, répondre à "Quel est le moyen le plus rapide d'effectuer des opérations de lecture/modification sur un fichier pour une application style 'traitement de texte'?". Je suppose qu'il existe de bien meilleure techniques que celles que j'ai citées...
indiana_jules
Messages postés750Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention23 décembre 200822 25 janv. 2005 à 08:55
Slut
ben d'après ce que j'ai compris, java.nio serait nettement plus rapide en terme d'accés disque mais on ne peut travailler que sur le flux et le buffer tandis que java.io permet de travailler sur les flux mais aussi sur les fichiers, les répertoires proprement dit.
Voilà
[Tout le monde a des idées : la preuve, c'est qu'il y en a de mauvaises]
allreader
Messages postés3Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention25 janvier 2005 25 janv. 2005 à 20:38
Je reformule mon dernier post...
Je sais très bien ce qu'est un buffer et un flux, mais par contre, je me demande : "Qu'est-ce qui fait la spécificité de java.nio? Sun designe t'il ce package comme successeur de java.io?"