Ouverture de fichier avec java

[Fermé]
Signaler
-
 escada83 -
Bonjour,
je suis en train de construire une fenetre qui fait apparaitre mes fichiers dans diferents onglets selon que ce soit un fichier son,video,image ou doc.Je n`ai pas de pb pour ouvrir les fichiers doc et images mais pour ce qui est des fichier son et video, il ne trouve pas l`application pour l`ouvrir.
la ligne de code : Runtime.getRuntime().exec(NOMFICHIER) marche bien pour les doc et images
celle ci Runtime.getRuntime().exec( "C:\\Program Files\\Windows Media Player\\wmplayer.exe NOMFICHIER.mp3" ) est une alternative mais ce n`est pas portatif..
avez vous une solution a me proposer?? merci beaucoup ..

7 réponses

Vous pouvez utiliser l'API Java Media Framework pour lire ce genre de fichier sans passer par un player externe :

https://www.oracle.com/java/technologies/javase/java-media-framework.html

Un petit exemple :
http://cedric.cnam.fr/~farinone/Java/Dunod/ch4-Video/video.html
merci d`avoir repondu.
Dans ce cas java va lire le contenu de la video ou du fichier audio. Ce que je souhaite c`est simplement ouvrir le fichier,mais ke la maniere d`ouverture de ces fichiers ne soit pas unique au pc (il faut que se soit portatif) .
pensez vous qu`il existe un moyen??
Je ne comprends pas la différence entre "ouvrir" une vidéo ou un mp3 et la ou le lire.

L'ouvrir avec mplayer (ou winamp ou autre player) n'est pas très portable, voilà pourquoi je vous proposais une lecture avec un programme java, donc natif, ce qui résoud une bonne part des problèmes de portabilité.

Sinon, vous pouvez vous contenter d'essayer de lancer mplayer avec le chemin habituel, comme vous le faites. S'il ne se trouve pas à cet emplacement, demandez à votre utilisateur de rechercher manuellement l'application à associer (mplayer, winamp ou autre exe). Inscrire ce chemin dans un fichier de config, à recharger au lancement de votre appli.
je comprend mieu.il est vrai qu`utiliser java sound serai plus pratique mais je n`ai jamais utiliser cette librairie donc je pense que je vais garder la solution non portatif et demander le chemin du mplayer.
par contre j`ai un pti souci lorsque j`appel runtime avec le chemin du mplayer et le nom du fichier audio,le programme m`ouvre le mplayer mais pas directement le fichier audio..que se passe t-il??
Runtime.getRuntime().exec("C:\\Program Files\\Windows Media Player\\wmplayer.exe piste1.mp3");
avez vous une idee?
Assurez-vous de fournir le chemin complet pour piste1.mp3

Runtime.getRuntime().exec("C:\\Program Files\\Windows Media Player\\wmplayer.exe \"C:\\chemin\\de\\piste1.mp3\"");

Voir aussi : https://www.google.fr/search?hl=fr&q=wmplayer+with+command+line+&meta=&gws_rd=ssl
merci beaucoup pour votre aide. tout marche tres bien, mais pourriez vous m`en dire plus a propos du fichier de config.comment ca marche??
Le scénario est le suivant :

Certaines informations suceptibles d'être différentes pour un utilisateur sont enregistrées sur sur poste, dans un fichier nommé par exemple "config.properties" dans un répertoire "MonAppli" du chemin par défaut de l'utilisateur (Sur Windows, par exemple, C:\Documents and Settings\in2ni\MonAppli\config.properties).

L'utilisateur in2ni lance "MonAppli" pour la première fois. Le répertoire C:\Documents and Settings\in2ni\MonAppli n'existe donc encore pas. Il faudra le créer. On partira du principe que mplayer doit se trouver sous le chemin suivant : C:\\Program Files\\Windows Media Player\\wmplayer.exe. On créera un objet java.util.Properties (une sorte de table de clés-valeurs), dans laquelle on inscrira par défaut une clé nommée par exemple "multimeda.player.path", avec pour valeur celle par défaut : C:\\Program Files\\Windows Media Player\\wmplayer.exe. A la première utilisation de votre appli, on enregistrera ce fichier de propriétés.
Dès que le programme aura besoin de lancer une application multimédia, il ira en chercher le chemin dans cet objet Properties. En admettant que le chemin soit invalide pour l'utilisateur, lui demander de chercher un player adéquat, et remplacer la valeur "multimeda.player.path" dans les Properties, puis enregister celles-ci dans config.properties, pour qu'elles soient à jour lors de la prochaine utilisation de l'appli.

import java.util.*;
import java.io.*;

public static final String APPLICATION_NAME = "MonAppli"; // à votre guise
public static final String CONFIG_PROPERTIES = "config.properties";
public static final String DEFAULT_MMPLAYER_PATH = "multimeda.player.path";

protected Properties config;

// appeler cette méthode à l'ouverture de votre appli
protected void initProperties ()
{
this.config = new Properties ();
File userHome = new File (System.getProperty ("user.home")); // Récupère le répertoire de l'utilisateur
File appliHome = new File (userHome, APPLICATION_NAME); // Répertoire de votre appli
if (! appliHome.exists()) appliHome.mkdirs(); // s'il n'existe pas (1ère utilisation, ou l'utilisateur l'a supprimé, le créer)
File appliConfig = new File (appliHome, CONFIG_PROPERTIES); // Fichier de propriétés
this.config = new Properties(); // On crée this.config, vide d'abord
// on essaie de charger les propriétés à partir du fichier appliConfig.
// Si ce fichier n'existe pas, on inscrit les propriétés par défaut et au lieu de charger le fichier on l'enregistre
try
{
FileInputStream fis = new FileInputStream (appliConfig);
this.config(fis);
fis.close();
// Vos propriétés devraient normalement contenir la clé "multimeda.player.path"
}
catch (Exception e) // le chargement de this.config a planté, sûrement parce que le fichier n'existait pas
{
// On ajoute la clé "multimeda.player.path" dans this.config
this.config.setProperty ("multimeda.player.path", DEFAULT_MMPLAYER_PATH);
FileOutputStream fos = new FileOutputStream (appliConfig);
this.config.store (fos, "Config de " + APPLICATION_NAME);
fos.flush();
fos.close();
}
}

//******************************************
Lorsque vous devez ouvrir un fichier multimédia :

String mmplayerExePath = this.config.getProperty ("multimeda.player.path");
File mmplayerFile = new File (mmplayerExePath);
if (! mmplayerFile.exists()) // Si l'exe n'existe pas à cet emplacement sur le poste de l'utilisateur
{
// admettons que la recherche du fichier par l'utilisateur soit dans la méthode selectMmPlayerPath ()
mmplayerExePath = selectMmPlayerPath ();
// on stocke le nouveau chemin dans les propriétés, qu'on enregistre dans le fichier également
this.config.setProperty ("multimeda.player.path", mmplayerExePath);
File userHome = new File (System.getProperty ("user.home"));
File appliHome = new File (userHome, APPLICATION_NAME);
File appliConfig = new File (appliHome, CONFIG_PROPERTIES);
FileOutputStream fos = new FileOutputStream (appliConfig);
this.config.store (fos, "Config de " + APPLICATION_NAME);
fos.flush();
fos.close();
}
String cmdLine = mmplayerExePath + " " + "\"" + chemin_du_fichier_à_ouvrir + "\"";
Runtime.getRuntime().exec (cmdLine);*
...

Evidemment, on peut stocker tout ce que l'on veut comme autre info dans le fichier de propriétés, par exemple également, pour chaque extension de fichier une application associée (comme dans Windows :
clé -> valeur
mp3 -> mplayer.exe
wma -> mplayer.exe
doc -> word.exe)

Etc.
merci beaucoup pour vos explications ca m`a beaucoup aide..