IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème pour créer un SLX en Java


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Problème pour créer un SLX en Java
    Bonjour à tous, j'ai un petit problème de développement à résoudre mais c'est un peu compliqué à comprendre.

    J'aimerai créer un .slx avec java. Un .slx est un fichier s'ouvrant sous MATLAB/Simulink remplaçant le .mdl.
    Un .slx est un fichier d'archive que l'on peut décompresser facilement avec JAVA.
    Le problème arrive au moment de recompresser les fichiers. Avec JAVA, on parvient à compresser les fichiers dans un .slx mais ce dernier n'est pas reconnu par MATLAB/Simulink. Pourtant lorsque l'on compresse les fichiers à la main dans une archive ".zip" et que l'on renomme l’extension ".zip" en ".slx", le fichier s'ouvre normalement dans MATLAB/Simulink.

    Quelqu'un aurait une d'idée d’où pourrait provenir le problème?

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu le créés comment ce SLX ? Avec ZIpOutputStream puis renommage ? Dans ce cas, le fichier peut-il être ouvert avec un logiciel de zip (tel WinZip, 7Zip, etc.) ? Ceci te permettrait d'éventuellement comparer les deux versions, celle générée en Java et celle qui s'ouvre bien sous matlab. En fonction des différences, on pourrait savoir comment résoudre le problème.

    Sinon, à l'ouverture sous Matlab, quand ça plante, il y a un message d'erreur ?

    D'autre part, as-tu tenté une compression bzip2 (avec Apache Common Compress par exemple) ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Oui j'utilise ZIpOutputStream puis renommage pour créer le .slx. Quand on regarde les différences sous 7zip, on remarque une compression plus importante sur le fichier créé avec JAVA.

    Le message d'erreur sous matlab est le suivant:

    Nom : matalb_err.jpg
Affichages : 217
Taille : 19,2 Ko

    Non je n'ai pas essayé bzip2, je vais voir ce que ça donne.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    D'après le message, ce n'est pas un problème de format zip, mais de contenu. Je ne connais pas le format SLX (j'ai juste lu qu'il s'agissait de xml), et je ne sais pas ce qu'est un part name (un tag dans le xml ou un nom de dossier, à priori plus probablement), mais le message dit qu'il ne devrait pas y avoir un / à la fin. C'est d'ailleurs ce genre de différences que j'espérais entre les deux zip : une différence dans un nom de ZipEntry (et j'ai déjà rencontré ce cas du slash final sur les noms de dossier).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Et du coup tu as résolu comment ce problème de slash? Sachant que dans l'archive, il y a plusieurs fichiers et sous répertoire.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je ne peux pas savoir s'il s'agit de la solution à ton problème sans savoir ce qu'est ce part name dans le format SLX. En tout cas, le traitement que j'ai fait, et qui concerne les sous-dossier, est tout simple : avoir un / à la fin des path relatifs utilisés comme nom de zipentry, pour celles correspondant aux dossiers. Mais ton message d'erreur parle de ne pas avoir de slash... donc ce n'est de toute manière pas la solution à priori.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Je crois que le problème vient des slash, car rien dans les fichiers et sous répertoires ne prend le nom de "part name". Par contre dans la fonction que j'ai récupérée, on ajoute bien un slash à la fin de chaque de nom de répertoire nécessaire au bon fonctionnement de celle-ci.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par Tino7886 Voir le message
    Par contre dans la fonction que j'ai récupérée, on ajoute bien un slash à la fin de chaque de nom de répertoire nécessaire au bon fonctionnement de celle-ci.
    Je serais curieux de voir le contenu de cette fonction.
    Ou du moins les lignes de code correspondantes
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Voici la fonction utilisée pour "zipper" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    private static void zipDir(String basedir, String currentdir, ZipOutputStream zos)
    			throws FileNotFoundException, IOException {
    		//create a new File object based on the directory we have to zip
    		File zipDir = (currentdir != null) ? new File(basedir, currentdir) : new File(basedir);
    		//get a listing of the directory content
    		String[] dirList = zipDir.list();
    		byte[] readBuffer = new byte[BUFFER_SIZE];
    		int bytesIn = 0;
    		//On met pas File.separator, mais "/" parce que c'est le caractére utilisé
    		//dans les ZIP.
    		String currentdir2 = (currentdir != null) ? (currentdir + "/") : "";
     
    		File f;
    		FileInputStream fis;
    		BufferedInputStream bis;
    		ZipEntry anEntry;
    		//Create an empty entry with just dir name, like WinZip, so unzipToDir will
    		//behave correctly.
    		if (currentdir2.length() > 0) {
    			//			anEntry = new ZipEntry(StringHelper.sansAccents(currentdir2));
    			anEntry = new ZipEntry(currentdir2);
    			zos.putNextEntry(anEntry);
    			zos.closeEntry();
    		}
    		//loop through dirList, and zip the files
    		for (int i = 0; i < dirList.length; i++) {
    			f = new File(zipDir, dirList[i]);
    			if (!f.exists())
    				continue;
    			if (f.isDirectory()) {
    				//if the File object is a directory, call this
    				//function again to add its content recursively
    				zipDir(basedir, currentdir2 + dirList[i], zos);
    				continue;
    			}
    			//if we reached here, the File object f was not a directory
    			//create a FileInputStream on top of f
    			fis = new FileInputStream(f);
    			try {
    				bis = new BufferedInputStream(fis, BUFFER_SIZE);
    				try {
    					//create a new zip entry
    					//					anEntry = new ZipEntry(StringHelper.sansAccents(currentdir2 + dirList[i]));
    					anEntry = new ZipEntry(currentdir2 + dirList[i]);
    					anEntry.setTime(f.lastModified());
     
    					//place the zip entry in the ZipOutputStream object
    					zos.putNextEntry(anEntry);
    					//now write the content of the file to the ZipOutputStream
    					while ((bytesIn = bis.read(readBuffer, 0, BUFFER_SIZE)) != -1) {
    						zos.write(readBuffer, 0, bytesIn);
    					}
    					zos.closeEntry();
    				}
    				finally {
    					bis.close();
    				}
    			}
    			finally {
    				//close the Stream
    				fis.close();
    			}
    		}
    	}

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bon pour répondre à ma question, j'ai trouvé une solution au problème en compressant mes fichiers par une ligne de commande Windows, lancée par JAVA.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour créer un VBS exécutant du java.
    Par makayel dans le forum VBScript
    Réponses: 5
    Dernier message: 09/08/2013, 21h32
  2. [RMI] problème pour créer les _Skel et _Stub
    Par nixonne dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 06/07/2006, 19h49
  3. Problème pour créer une clé étrangère
    Par DevloNewb' dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/07/2006, 16h30
  4. Problème pour créer la relation
    Par LeNeutrino dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/02/2006, 13h24
  5. [XML word] problème pour créer des puces
    Par ratapapa dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/07/2005, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo