Accueil
Accueil
Le
Club
Delphi
Kylix
C
C++
Java
J2EE
DotNET
& C#
Visual
Basic
Access
Pascal
Dev
Web
PHP
ASP
XML
UML
SQL
SGBD
Win
Linux
Autres



Comment connaître le système d'exploitation depuis le programme ?
auteur : Clément Cunin
Bien que Java soit conçu pour fonctionner indépendament du système, il est parfoit utile de savoir lequel exécute notre programme. Cela permet, par exemple, de choisir si l'on doit exécuter Mozilla, Safari ou plutot Internet Explorer.

Pour cela, il suffit de consulter les variables d'environnement initialisées par la JVM :

String name = System.getProperty ( "os.name" ); String version = System.getProperty ( "os.version" );
lien : Comment accéder aux valeurs des variables d'environnement ?

Comment accéder aux valeurs des variables d'environnement ?
auteur : Clément Cunin
Variable d'environnement du système :
L'accès aux variables d'environnement se fait par l'intermédiaire de la classe java.lang.System et plus précisément par la méthode getProperty(java.lang.String clé). Cette méthode donne accès à toutes les variables définies par le système. Des variables peuvent facilement être initialisées lors du lancement du programme en les ajoutant à la ligne de commande :

java -DTEST="test" nom_programme // Création d'une variable : TEST = "test"
Variable d'environnement de Java :
Se baser sur les variables du système n'étant pas très portable, Java définit un certain nombre de variables de façon indépendante de la plateforme d'exécution.
Exemple :

System.getProperty("user.dir"); System.getProperty("java.home"); System.getProperty("os.name");
Connaître la liste des variables d'environnement :
La liste des variables d'environnement est disponible par la méthode getProperties() de la classe java.lang.System.
Programme affichant la liste de toutes les variables :

java.util.Enumeration liste = System.getProperties().propertyNames(); String cle; while( liste.hasMoreElements() ) { cle = (String)liste.nextElement(); System.out.println( cle + " = " + System.getProperty(cle) ); }

Comment exécuter une application externe ?
auteur : Clément Cunin
Execution :
L'exécution d'un programme externe se fait grâce à la méthode exec(java.lang.String commande) de la classe java.lang.Runtime.

try { Process proc = Runtime.getRuntime().exec("commande paramétrée"); } catch (IOException e) { }
Communication :
    Il est possible de communiquer avec l'application grâce à l'objet java.lang.Process :
  • destroy() pour tuer l'application fille.
  • waitFor() pour attendre la fin de l'application fille (Attention à ne pas bloquer l'exécution du processus d'évènement awt).
  • getErrorStream(), getInputStream() et getOutputStream() pour communiquer avec l'application.
  • exitValue() pour connaître l'état de sortie de l'application.


Comment lancer une application sans le terminal (Windows uniquement) ?
auteur : Clément Cunin
Lorsque l'on exécute une application Java sous windows, un terminal de commande permet d'afficher les entrées/sorties de l'application. Si vous souhaitez exécuter votre application sans le terminal, il suffit d'utiliser javaw.exe à la place de java.exe

javaw -CLASSPATH ... monAppli
Une deuxième solution consiste à créer une archive Jar contenant tous les fichiers de l'application et un fichier 'manifest'. De cette manière, il suffit alors de double-clicker sur le fichier jar pour l'exécuter.
Pour plus d'informations, lire : Comment créer un jar exécutable ?

lien : Comment créer un jar exécutable ?

Comment lire/écrire du texte dans le presse-papier ?
auteur : Clément Cunin
L'accès au presse-papier se fait grâce à la classe java.awt.datatransfer.Clipboard disponible dans la boite à outils (java.awt.Toolkit).

Lire du texte :

/** Lecture du contenu : */ Transférable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); try { /** Vérification que le contenu est de type texte. */ if( t!=null && t.isDataFlavorSupported(DataFlavor.stringFlavor) ) { String txt = (String)t.getTransferData(DataFlavor.stringFlavor); } } catch( UnsupportedFlavorException e1) { } catch( IOException e2 ) { }
Ecrire du texte :

try { StringSelection ss = new StringSelection("Mon Texte"); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss,null); } catch( IllegalStateException ) { /** Le presse-papier n'est pas disponible */ }
lien : Comment dessiner en Java ?

Comment lire/écrire une Image dans le presse-papier ?
auteur : Ioan Calapodescu
Le principe est le même que pour l'écriture ou la lecture de texte. La seule difficulté viens du fait qu'il n'existe pas d'image implémentant Transferable. Cette difficulté est toute relative car la création d'une telle classe tiens en quelques lignes :

import java.awt.*; import java.awt.datatransfer.*; import java.io.*; public class TransferableImage implements Transferable{ private Image image; public TransferableImage(Image uneImage){ image = uneImage; } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException{ if(!isDataFlavorSupported(flavor)){throw new UnsupportedFlavorException(flavor);} return image; } public DataFlavor[] getTransferDataFlavors(){ return new DataFlavor[]{DataFlavor.imageFlavor}; } public boolean isDataFlavorSupported(DataFlavor flavor){ return DataFlavor.imageFlavor.equals(flavor); } }
Pour un exemple d'utilisation regardez le fichier ci-dessous.

lien : Comment lire/écrire du texte dans le presse-papier ?
téléchargement : Exemple d'utilisation

Comment connaitre la mémoire utilisable de la carte graphique ?
auteur : Seigne David
Voici une méthode permettant de récuperer la mémoire disponible (en Mo) pour la carte graphique :

public int getAvailableMemory(){ // obtenir le type d'environnement graphique sous lequel tourne la JVM GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment(); // obtenir le périphérique d'affichage (carte graphique) GraphicsDevice device = environment.getDefaultScreenDevice(); // calcule le nombre de Méga Octets libres dans la carte graphique int bytes = device.getAvailableAcceleratedMemory(); int mbytes = bytes /1048576; return mbytes; }

Comment trouver le répertoire contenant le jar où est ma classe ?
auteur : bulbo
Le bout de code suivant permet de retrouver le répertoire contenant le fichier jar où est la classe courante.

Si la classe n'est pas dans un jar, le répertoire sera celui présent dans le CLASSPATH.
Par exemple si la classe est:
C:\sources\java\lang\Object.class
Le répertoire trouvé sera:
C:\sources

Voici le code pour réaliser ça:

String path = getClass().getName() + ".class"; URL url = getClass().getResource(path); path = URLDecoder.decode(url.toString(), "UTF-8"); // suppression de la classe ou du jar du path de l'url int index = path.lastIndexOf("/"); path = path.substring(0, index); if (path.startsWith("jar:file:")) { // suppression de jar:file: de l'url d'un jar // ainsi que du path de la classe dans le jar index = path.indexOf("!"); path = path.substring(9, index); } else { // suppresion du file: de l'url si c'est une classe en dehors d'un jar // et suppression du path du package si il est présent. path = path.substring(5, path.length()); Package pack = getClass().getPackage(); if (null != pack) { String packPath = pack.toString().replace('.', '/'); if (path.endsWith(packPath)) { path = path.substring(0, (path.length() - packPath.length())); } } } System.out.println("Répertoire contenant la classe: " + path);
NB : Pour un JDK inférieur au 1.4 il faut utiliser URLDecoder.decode(String uneURL).

NB2 : Pour appeler ce code depuis un bloc static il faut remplacer getClass() par NomDeLaClasse.class.



Consultez les autres F.A.Q's

Les codes sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Pour le reste, ce document constitue une oeuvre intellectuelle protégée par les droits d'auteurs.

Ce document issu de http://www.developpez.com est soumis à deux licences, en fonction des contributeurs :

- Les contributions de Clément Cunin et Johann Heymes sont soumises aux termes de la la licence GNU FDL traduite en français ici. Permission vous est donnée de distribuer, modifier des copies des contributions de Clément Cunin et Johann Heymes tant que cette note apparaît clairement :
"Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduite en français ici. Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement".

- Pour ce qui est des autres contributions : Copyright © 2004 Developpez LLC : Tous droits réservés Developpez LLC. Aucune reproduction, ne peux en être faite sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright 2000..2004 www.developpez.com