Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2459 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Pb de tableau de type File

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb de tableau de type File

n°239935
persepolis
Posté le 05-11-2002 à 16:33:44  profilanswer
 

J'essaie a partir d'un fichier zip que je dezippe de constituer un tableau de type File et ca ne marche pas .
 
    ZipEntry entry ;
    int ind=0;
    while( ( entry = zis.getNextEntry() ) != null ) {
         files[ind]=new File(entry.getName());
         ind++;
    }
Qq'un a-t-il une idée ?


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
mood
Publicité
Posté le 05-11-2002 à 16:33:44  profilanswer
 

n°239944
darklord
You're welcome
Posté le 05-11-2002 à 16:44:14  profilanswer
 

toi t'as VRAIMENT du mal avec les tableaux.  
 
aucune réponse valable tant que :
 
- Tu ne montres pas le code complet (comment est déclaré files)
- Tu expliques ce qui cloche. "Ca ne marche" ne donne aucune info


---------------
Just because you feel good does not make you right
n°239952
persepolis
Posté le 05-11-2002 à 16:48:23  profilanswer
 

DarkLord a écrit a écrit :

toi t'as VRAIMENT du mal avec les tableaux.  
 
aucune réponse valable tant que :
 
- Tu ne montres pas le code complet (comment est déclaré files)
- Tu expliques ce qui cloche. "Ca ne marche" ne donne aucune info




T'as l'impression que j'pédale dans l'yaourt mais j'avance jour après jour ...
Donc déclaration : File[] files=null;
Le probleme c'est que j'arrive pas a avoir de traces ...
La seule chose que je sais c'est que mon traitement ne va pas au bout .
P.S : C'est une servlet et j'ai regarder dans les log de Tomcat
J'ai rien vu. Où est-ce-que je pourrais regarder sinon ?


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
n°239955
darklord
You're welcome
Posté le 05-11-2002 à 16:51:23  profilanswer
 

persepolis a écrit a écrit :

 
T'as l'impression que j'pédale dans l'yaourt mais j'avance jour après jour ...
Donc déclaration : File[] files=null;




 
ah bin c'est clair t'es venu avec un problème similaire la semaine passée et c'était exactement la même erreur !!! Si tu mets ton tableau à null il n'y a aucune référence hein :o
 
Donc laisse moi rire. T'es quand meme très fort de venir à deux semaines d'intervalles avec exactement le meme genre de problème et exactement la meme cause


---------------
Just because you feel good does not make you right
n°239957
Dephi
Posté le 05-11-2002 à 16:52:37  profilanswer
 

persepolis a écrit a écrit :

 
T'as l'impression que j'pédale dans l'yaourt mais j'avance jour après jour ...
Donc déclaration : File[] files=null;




 
Et si tu initialisais ton tableau ????  
 :sarcastic:


---------------

n°239958
Dephi
Posté le 05-11-2002 à 16:53:07  profilanswer
 

Arf !!
Grillaid !!!!  
:D


---------------

n°239960
darklord
You're welcome
Posté le 05-11-2002 à 16:54:07  profilanswer
 

Bon un tableau est qqch de statique. Tu dois connaitre la taille de ton tableau avant de le créer. Donc toi tu ne la connais pas et tu le mets à null pensant que c'est bon ...
 
Bon déjà y a un prob de comprhénsion à ce niveau. Si un objet référence null, il n'y a aucune instance associée avec cet objet (et donc tenter d'accéder à une des "cases" du tableau va te jeter puisqu'il n'y a PAS de tableau).
 
Lorsque tu ne connais pas la taille à l'avance, utilise un arraylist
 

Code :
  1. ArrayList res = new ArrayList();
  2. while((entry = zis.getNextEntry()) != null ) {
  3.      res.add(new File(entry.getName());
  4. }
  5. File[] files = (File[]) res.toArray(new File[res.size()]);


 
je n'ai pas dit que le reste de ton code est correct hein. Ca c'est une autre histoire :o


Message édité par darklord le 05-11-2002 à 17:12:22

---------------
Just because you feel good does not make you right
n°239966
R3g
fonctionnaire certifié ITIL
Posté le 05-11-2002 à 16:58:57  profilanswer
 

DarkLord a écrit a écrit :

Lorsque tu ne connais pas la taille à l'avance, utilise un arraylist



Tiens moi j'utilise plutot un Vector. C'est mieux ArrayList ? C'est quoi les differences ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°239968
darklord
You're welcome
Posté le 05-11-2002 à 17:01:34  profilanswer
 

R3g a écrit a écrit :

 
Tiens moi j'utilise plutot un Vector. C'est mieux ArrayList ? C'est quoi les differences ?




 
un vector est synchronisé et est bcp plus lent qu'une arraylist. Si tu dois mettre des éléments de meme type et que tu ne connais pas la taille, l'arraylist est le meilleur choix (pour autant qu'il n'y ait pas de problème de concurence et ici c'est clairemnt pas le cas).
 
A+


---------------
Just because you feel good does not make you right
n°239970
R3g
fonctionnaire certifié ITIL
Posté le 05-11-2002 à 17:05:00  profilanswer
 

Ok merci  ;)


---------------
Au royaume des sourds, les borgnes sont sourds.
mood
Publicité
Posté le 05-11-2002 à 17:05:00  profilanswer
 

n°239973
darklord
You're welcome
Posté le 05-11-2002 à 17:07:03  profilanswer
 

R3g a écrit a écrit :

Ok merci  ;)  




 
you're welcome ;)


---------------
Just because you feel good does not make you right
n°239977
persepolis
Posté le 05-11-2002 à 17:10:52  profilanswer
 

DarkLord a écrit a écrit :

 
ArrayList res = new ArrayList();
while((entry = zis.getNextEntry()) != null ) {  
     res.add(new File(entry.getName());  
}
File[] files = res.toArray(new File[res.size()]);
 




Merci,
J'avoue que j'ai plus qu'à mettre 10 balles dans le bourrin...
 
par contre à la compil, j'ai cette erreur que je ne m'explique point ?
 
UploadServlet.java [97:1] incompatible types
found   : java.lang.Object[]
required: java.io.File[]
   File[] files = res.toArray(new File[res.size()]);
 
What happened?


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
n°239979
darklord
You're welcome
Posté le 05-11-2002 à 17:12:07  profilanswer
 

ah oui c'est ma faute. J'ai oublié un truc. Desolaid je corrige. C'est parce que toArray renvoit un tableau d'objets et il faut le caster. Deux secondes j'édite


---------------
Just because you feel good does not make you right
n°240283
gfive
Posté le 05-11-2002 à 23:50:19  profilanswer
 

DarkLord a écrit a écrit :

 
 
un vector est synchronisé et est bcp plus lent qu'une arraylist. Si tu dois mettre des éléments de meme type et que tu ne connais pas la taille, l'arraylist est le meilleur choix (pour autant qu'il n'y ait pas de problème de concurence et ici c'est clairemnt pas le cas).
 
A+




 
bouhou....vous pouvez pas connaître le désarroi du mec qui code des applets en Java < 1.5, quand ArrayList n'existait pas! :D
 
Sinon, si je poste avant que Dark n'édite :  
 
File[] files = (File[]) res.toArray(new File[res.size()]);

n°240286
HappyHarry
Posté le 05-11-2002 à 23:51:20  profilanswer
 

gfive a écrit a écrit :

 
 
bouhou....vous pouvez pas connaître le désarroi du mec qui code des applets en Java < 1.5, quand ArrayList n'existait pas! :D
 
Sinon, si je poste avant que Dark n'édite :  
 
File[] files = (File[]) res.toArray(new File[res.size()]);  




 
euh .. il a edité son premier post il y a bien longtemps  :lol:

n°240333
persepolis
Posté le 06-11-2002 à 08:35:38  profilanswer
 

Merci everybody


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
n°240402
Prince2Lu
Posté le 06-11-2002 à 11:05:42  profilanswer
 

Citation :


Sinon, si je poste avant que Dark n'édite :  
File[] files = (File[]) res.toArray(new File[res.size()]);  


 
Mouais ca ne marche pas ton cast. :??: alors avant d écrire du code qui marche pas fodrait vérifier hein :lol:

n°240403
benou
Posté le 06-11-2002 à 11:07:27  profilanswer
 

Prince2Lu a écrit a écrit :

 
Mouais ca ne marche pas ton cast. :??: alors avant d écrire du code qui marche pas fodrait vérifier hein :lol:




bien sur que ca marche.  
avant de critiquer les autres, vérifie que c'est pas toi qui merde !

n°240405
darklord
You're welcome
Posté le 06-11-2002 à 11:15:04  profilanswer
 

Prince2Lu a écrit a écrit :

Citation :


Sinon, si je poste avant que Dark n'édite :  
File[] files = (File[]) res.toArray(new File[res.size()]);  


 
Mouais ca ne marche pas ton cast. :??: alors avant d écrire du code qui marche pas fodrait vérifier hein :lol:




 
 :heink:  :heink:  :heink:


---------------
Just because you feel good does not make you right
n°240431
BifaceMcLe​OD
The HighGlandeur
Posté le 06-11-2002 à 12:04:43  profilanswer
 

Prince2Lu a écrit a écrit :

Citation :


Sinon, si je poste avant que Dark n'édite :  
File[] files = (File[]) res.toArray(new File[res.size()]);  


 
Mouais ca ne marche pas ton cast. :??: alors avant d écrire du code qui marche pas fodrait vérifier hein :lol:




Pourquoi ça ne marcherait pas ? Qu'est-ce qui cloche à ton avis dans ce cast ? :heink:  
(il y a pas d'âge pour apprendre des trucs... ;) )

n°240513
Prince2Lu
Posté le 06-11-2002 à 14:44:48  profilanswer
 

Voici mon code :
LinkedList listTemp = new LinkedList();
Parameter tab [] = (Parameter [])listTemp.toArray();
 
Voici l'exception :
type Exception report
message Internal Server Error
description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.
exception  
java.lang.ClassCastException: java.lang.Object
 
Donc si kk1 peut m expliquer pourquoi ca marche pas , je suis preneur:D  
 
pour l'instant je fais ce truc qui marche par contre :
Object objTab [] = listTemp.toArray();
Parameter prmTab [] = new Parameter [objTab.length];
for (int i=0 ; i < objTab.length ; i++)
prmTab[i]=(Parameter)objTab[i];
mais bon c pas le top...
 
 
 

n°240524
gfive
Posté le 06-11-2002 à 14:54:25  profilanswer
 

'tain, mais tlis les réponses, bordel!!!
 
On te dit :  
 
 
Parameter tab [] = (Parameter [])listTemp.toArray(new Parameter[listTemp.size()] );  
 
alors bon...


Message édité par gfive le 06-11-2002 à 14:54:45
n°240525
darklord
You're welcome
Posté le 06-11-2002 à 14:54:55  profilanswer
 

j'adore les gens qui critiquent et qui ne savent meme pas lire ...


---------------
Just because you feel good does not make you right
n°240532
benou
Posté le 06-11-2002 à 14:57:58  profilanswer
 

Citation :

File[] files = (File[]) res.toArray(new File[res.size()]);


 

Prince2Lu a écrit a écrit :

Voici mon code :
LinkedList listTemp = new LinkedList();
Parameter tab [] = (Parameter [])listTemp.toArray();




 [:benou]  
 

Prince2Lu a écrit a écrit :

alors avant d écrire du code qui marche pas fodrait vérifier hein



 :fou:  
 :gun:  
 

n°240549
gfive
Posté le 06-11-2002 à 15:10:35  profilanswer
 

c'est la triplette magique du reply haineux, Gfive/Darklord/Benou!! :D:D

n°240550
darklord
You're welcome
Posté le 06-11-2002 à 15:11:45  profilanswer
 

:jap:


---------------
Just because you feel good does not make you right
n°240562
Prince2Lu
Posté le 06-11-2002 à 15:15:01  profilanswer
 

Citation :


'tain, mais tlis les réponses, bordel!!!  
On te dit :  
Parameter tab [] = (Parameter [])listTemp.toArray(new Parameter[listTemp.size()] );  
alors bon...


Désolé Pardon Mille excuses Mea Culpa Excuse me Sorry  :D  
 :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  
:bounce:
Et pour ma culture personnelle, pourquoi avec toArray() ca marche pas et que ca marche avec toArray(Object []) ???  :??:  
 

n°240668
darklord
You're welcome
Posté le 06-11-2002 à 15:46:41  profilanswer
 

BifaceMcLeOD a écrit a écrit :

Je réponds...




 
 :??:


---------------
Just because you feel good does not make you right
n°240678
BifaceMcLe​OD
The HighGlandeur
Posté le 06-11-2002 à 15:51:30  profilanswer
 

Si tu lis le Javadoc de ces 2 fonctions, tu verras que toArray(Object[]) prend le tableau en argument et le remplit avec les éléments de la liste (par sécurité, si le tableau est trop petit, cette méthode en réalloue un nouveau). Alors que toArray() sans argument alloue un nouveau tableau et le remplit avec les éléments de la liste.
 
Pourquoi ça marche : parce que si c'est la méthode toArray() qui alloue le tableau, celui-ci aura comme type à l'exécution Object[]. Forcément, puisque la méthode ne peut pas utiliser un type plus spécialisé qu'Object comme type des éléments du tableau. Par conséquent, si tu essaies de caster en File[] un tableau alloué en tant que Object[], tu te prends une ClassCastException.
 
Alors que si tu alloues toi-même le tableau, et que tu le passes en argument à toArray, celui-ci aura déjà le bon type (à moins que tu sois débile :D) puisque tu auras déjà alloué un tableau de type File[]. Et quand, en retour de la fonction toArray, tu essaies de le caster en File[], il n'y a plus d'erreur, puisque c'est effectivement son type à l'exécution.
 
Capici ?  :D


Message édité par BifaceMcLeOD le 06-11-2002 à 15:52:51
n°240689
darklord
You're welcome
Posté le 06-11-2002 à 15:57:42  profilanswer
 

rien à redire :jap:


---------------
Just because you feel good does not make you right
n°240692
Prince2Lu
Posté le 06-11-2002 à 15:58:39  profilanswer
 

Capici  :bounce:  :pt1cable:  :p
 :spookie:  

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Pb de tableau de type File

 

Sujets relatifs
[mysql] comment changer le type d'une table ?Quel language pour ce type d' application intranet ????
struct tableau ds 1 fonction ...stocker des info ds tableau
Occurrences de caracteres dans un tableau .....[ JS ] générer un nombre aléatoire et probleme de tableau ( var )
Trier un tableau a DEUX dimensions !Changement de type de variable
[VB6]Grille/tableau[filemaker] lister par type
Plus de sujets relatifs à : Pb de tableau de type File


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR