begin process at 2010 02 10 13:37:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

[ObjectInputStream/ObjectOutputStream]écrire un object au fur et à mesure[:)]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[ObjectInputStream/ObjectOutputStream]écrire un object au fur et à mesure[:)]

lundi 23 août 2004 à 08:53:26 | [ObjectInputStream/ObjectOutputStream]écrire un object au fur et à mesure[:)]

Frouf85

Salut,

Bon voila, j'ai un petit pb, si quelqu'un pouvais me sortir de cette M%$#¤ ça serait cool.

Donc voila, je possède une application cliente et une application serveur qui communique en s'envoyant des object grâce à ObjectOutputStream et ObjectInputStream. Cest objects peuvent autant être des messages que des fichiers.

C'est sur ce deuxième point que les problèmes se posent. En fait, l'envoi de fichiers de trop grande taille me provoque une exception du type OutOfMemory, ce qui est tout à fait compréhensible vu le peu de mémoire vive qu'il y a sur les PC.

Je voulais donc savoir comment envoyer ces fichiers de grande taille en utilisant ObjectOutputStream et ObjectInputStream.
Est-il possible de les envoyer byte par byte et de les récupérer par la suite?
Sachant que pour déclencher la réception d'un object, je faisait un readObject qui est bloquant, comment pourrais-je faire par la suite?

Si tu as une réponse même si elle ne répond pas à toutes mes questions n'hésite pas, je susi à l'écoute.

Merci,

Frouf
lundi 23 août 2004 à 09:23:17 | Re : [ObjectInputStream/ObjectOutputStream]écrire un object au fur et à mesure[:)]

wargre

tu decoupe ton fichier en tranche de 1Mo et hop le tour est joue....


lundi 23 août 2004 à 09:28:07 | Re : [ObjectInputStream/ObjectOutputStream]écrire un object au fur et à mesure[:)]

Frouf85

Tu veux me dire d'envoyer plusieurs Object contenant chacune une tranche de fichier. C'est pas bête merci. Je vais tester, pour voir comment le découper et le recontruire après.

Frouf
mercredi 25 août 2004 à 16:39:50 | Re : [ObjectInputStream/ObjectOutputStream]écrire un object au fur et à mesure[:)]

Frouf85

Bon ben je viens d'essayer et j'ai essayé de retourner le pb sous toutes les coutures mais ça ne marche toujours pas il me met java.lang.outOfMemory error.

Voila une partie de mon code:



//j'obtiens l'adresse absolue de mon fichier (ça marche)
String adresseFichier=config.getAdresseSMQ()+File.separator+(String)((Vector)objectTransmis.getContenu()).elementAt(0);


//j'ouvre donc un FileInputStream pour lire mon fichier byte par byte

FileInputStream fichierADecouper=new FileInputStream(config.getAdresseSMQ()+File.separator+(String)((Vector)objectTransmis.getContenu()).elementAt(0));

//je détermine combien il y aura de paquet à envoyer

int tailleFichier=fichierADecouper.available();
int nbPaquet=(new Double(StrictMath.ceil(tailleFichier*1.0/TAILLEPAQUER))).intValue();


//je cré le premier objet à envoyer qui déterminera combien il y aura de paquet, le nom du fichier et sa date de création

Vector oldContenu=(Vector)objectTransmis.getContenu();
Vector contenu=new Vector();
contenu.add(oldContenu.elementAt(0));
contenu.add(oldContenu.elementAt(1));
contenu.add(oldContenu.elementAt(2));
contenu.add(new Integer(nbPaquet));
objectTransmis=new ObjectTransmis("envoiFichier",contenu);

//j'ajoute ce premier objet dans le vector qui contient tous les objets à envoyer ( ce vector est limité en taille ) le pb ne vient donc pas de là

objectATransmettres.add(objectTransmis);
aTransmettre++;

//je crée chaque tronçon de fichier à partir du FileInputStream

int[] tranche;
Vector trancheVec;
for (int i=0;i<nbPaquet;i++){
//vérification que le vecteur d'attente d'envoi n'est pas plein
while(MAXSIZE==objectATransmettres.size()){ System.out.println("vector rempli");
try {
wait(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
tranche=new int[TAILLEPAQUER];
int byteFichier=-1;
for (int j=0;j<tranche.length;j++){
byteFichier=fichierADecouper.read();
tranche[j]=byteFichier;
}
trancheVec=new Vector(3);
trancheVec.add((String)((Vector)objectTransmis.getContenu()).elementAt(0));
trancheVec.add(new Integer(i));
trancheVec.add(tranche);
objectTransmis=new ObjectTransmis("envoiFichier",trancheVec);
objectATransmettres.add(objectTransmis);
aTransmettre++;
}


et donc comme ça il arrive à m'envoyer 14,7 Mo (j'envoi des paquet de 1000000 de d'octets).

Je me posais donc la question: ouvre t-il le fichier au fur et à mesure qu'il lit dans le FileInputStream? Dans ce cas, ce n'est pas bon, parce qu'un fichier qui fait plus de 650 Mo par exemple, il ne pourra pas l'ouvrir entièrement.

aurais-tu une réponse voire une solution.

merci,

Frouf
jeudi 26 août 2004 à 10:45:22 | Re : [ObjectInputStream/ObjectOutputStream]écrire un object au fur et à mesure[:)]

Frouf85

Mon pb est à moitié résolu, en utilisant des fileChannel, j'ai réussi à passe 58Mo mais je ne sais pas pourquoi il me fait cette erreur de java.lang.outOfMemory.
Si j'ai la réponse un jour, je la posterais sur ce forum.

Frouf
samedi 30 octobre 2004 à 09:49:08 | Re : [ObjectInputStream/ObjectOutputStream]écrire un object au fur et à mesure[:)]

AbriBus

Salut Frouf, as tu trouvé une reponse a cette question... est-elle toujours d'actualité ?

Que la prog soit avec toi...

Bubus...
mardi 2 novembre 2004 à 10:59:49 | Re : [ObjectInputStream/ObjectOutputStream]écrire un object au fur et à mesure[:)]

Frouf85

Non, désolé, je n'ai trouvé aucune réponse de plus.
Bonne chance et si tu trouve n'hésite pas à le poster.

Frouf


Cette discussion est classée dans : écrire, fichiers, object, objectinputstream, objectoutputstream


Répondre à ce message

Sujets en rapport avec ce message

[ObjectInputStream/ObjectOutputStream] blocage lors du writeObject [ par Frouf85 ] bonjour,je voulais savoir si quelqu'un avait une solution à mon problème.J'ai deux application une serveur et l'autre client et j'envoi des objets grâ StreamCorruptedException [ par didoux95 ] Bonjour à tous.Dans mon appli, j'ai besoins de récupérer un Object. je le fait via un ObjectInputStream. Lorsque je fait "readObject", j'obtiens l'exc Trier des noms de fichiers [ par thegame ] J'essaie de trier une liste de fichiers par leur nomsSoit la classe :public class Fichier implements Comparable {   String nom;   ....   public int co Envoi de types Object sur un reseau [ par Guegue85 ] Bonjour, Voilà j'ai un souci, je voudrais envoyer des classes complète sur un reseau. Pour cela, j'ai serialiser ma classe. Qd j'envoi ma premiere cla arborescence de fichiers .java [ par othland ] slt tlm;j'ai plusiers fichiers .java, chacun d'eux depend de l'autre!! y a des fichiers entre eux qui ne peuvent pas se compiler avant les autres!! le Utilisation de Net Beans Lib Perso [ par david_paris ] onjour, Jusqu'a aujourd'hui j'ai utilisé un éditeur de texte et la console pour écrire mes programmes en Java. Je viens de décider de travailler avec Explorer les fichiers d'un serveur [ par nadimunam ] Bonjour tout le monde, dans le cadre de mon projet informatique je dois develloper un qcm en ligne. J'aurai voulu savoir si il était possible de liste JExcelApi et gestion des macros [ par Hermios ] Bonjour tous les gens!!!Voilà, je dois réaliser une copie automatique de fichiers excels contenant des styles de cellules particuliers, et des macros. package&properties [ par mop666 ] Bonjour, je m'ennuyais chez moi et je me suis mis à développer un package. Et comme j'avais besoin de properties, je suis amusé à les mettre dans mon JSP/Servlet Bean Upload [ par keopsk ] Bonjour,J'utilise une jsp pour saisir des données. Ces informations sont envoyées à une servlet en utilisant un bean (enregistré dans dans la session)


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales