Histoire de chemin relatif...

Histoire de chemin relatif... - Java - Programmation

Marsh Posté le 29-10-2003 à 12:24:34    

Voilà, j'arrive via un JFileChooser à récupérer le chemin en absolu du fichier sélectionné.
 
Je connais également le chemin (toujours en absolu) du fichier de ma fenêtre de travail.
 
Donc par exemple, je sélectionne un fichier css avec le JFileChooser, et j'ai : c:\truc\test.css
 
j'appelle le JFileChooser depuis c:\truc.
 
Existe-t-il un moyen d'avoir non pas c:\truc\test.css, mais bien seulement : truc\test.css
 
Je voudrais évidemment que si par exemple le fichier sélectionné est c:\test.css alors que je me trouve dans c:\truc\machin\ avoir à ce moment là : ../../test.css  
 
Est-ce que quelque chose existe déjà ? Où faut-il le faire soi-même ?
 
[:meganne]

Reply

Marsh Posté le 29-10-2003 à 12:24:34   

Reply

Marsh Posté le 29-10-2003 à 13:56:32    

Un peu de code pour vous aider :
 

Code :
  1. int retval = fileChooser.showDialog(fileChooser, null);
  2.  
  3.     if(retval == JFileChooser.APPROVE_OPTION) {
  4.       String fichier = fileChooser.getSelectedFile().getName();
  5.       String p = fileChooser.getSelectedFile().getPath();
  6.       String tst = buffer.getPath();
  7.       String ap = fileChooser.getSelectedFile().getAbsolutePath();
  8.       textArea.setSelectedText(ap);
  9.     }


 
fonctionne parfaitement, mais :
 

Code :
  1. int retval = fileChooser.showDialog(fileChooser, null);
  2.  
  3.     if(retval == JFileChooser.APPROVE_OPTION) {
  4.       String fichier = fileChooser.getSelectedFile().getName();
  5.       String p = fileChooser.getSelectedFile().getPath();
  6.       String tst = buffer.getPath();
  7.       String ap = fileChooser.getSelectedFile().getRelativePathForwardSlash(tst)();
  8.       textArea.setSelectedText(ap);
  9.     }


 
ne fontionne pas et renvoie :
 
 
reflection error: bsh.ReflectError: Method getRelativePathForwardSlash( java.lang.String ) not found in class'sun.awt.shell.Win32ShellFolder' : at Line: 56 : in file: C:\WINDOWS\.jedit\macros\perso\test-load.bsh : .getRelativePathForwardSlash ( tst )

Reply

Marsh Posté le 29-10-2003 à 13:56:51    

je ne pense pas que ca existe, mais ca se fait sans trop de difficulté à coup de StringTokenizer...
mais du coup c'est pas très portable (faut rajouter manuellement des ".." :/)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-10-2003 à 13:58:11    

On a posté en même temps... Regarde ce que j'ai trouvé dans la doc. Malheureusement, ça ne marche pas avec le getRelativePath, mais uniquement avec le getAbsolutePath   :/

Reply

Marsh Posté le 29-10-2003 à 14:01:50    

Hermes le Messager a écrit :

On a posté en même temps... Regarde ce que j'ai trouvé dans la doc. Malheureusement, ça ne marche pas avec le getRelativePath, mais uniquement avec le getAbsolutePath   :/


elle est louche ton erreur. Tu es sûr que tu compiles avec la même vesion de java que tu executes ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-10-2003 à 14:04:52    

benou a écrit :


elle est louche ton erreur. Tu es sûr que tu compiles avec la même vesion de java que tu executes ?


merde j'avais pas vu. C'est sur file que tu essaye d'executer la méthode "getRelativePathForwardSlash". Ou est ce que tu l'as trouvé celle là ? elle existe pas  :pt1cable:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-10-2003 à 14:05:18    

benou a écrit :


elle est louche ton erreur. Tu es sûr que tu compiles avec la même vesion de java que tu executes ?


 
Ben en fait c'est du BeanShell  :whistle:  Donc, c'est l'interprêteur qui me renvoie cette erreur. Mais ça ne l'explique pas quand même, vu que normalement, tous les objets des classes incluses sont utilisables. Il n'y a que la redéfinition d'objets qui est impossible à faire.

Reply

Marsh Posté le 29-10-2003 à 14:05:55    

benou a écrit :


merde j'avais pas vu. C'est sur file que tu essaye d'executer la méthode "getRelativePathForwardSlash". Ou est ce que tu l'as trouvé celle là ? elle existe pas  :pt1cable:  


Je l'ai trouvé là :
 
http://www.cotsec.com/developers/a [...] a.io.File)
 

Reply

Marsh Posté le 29-10-2003 à 14:07:19    

Hermes le Messager a écrit :

reflection error: bsh.ReflectError: Method getRelativePathForwardSlash( java.lang.String ) not found in class'sun.awt.shell.Win32ShellFolder'


pkoi il te coause de 'sun.awt.shell.Win32ShellFolder' ?? c'est sûr un file que tu essayes d'appeler la méthode ! [:mlc]
 
de toute façon j'ai vérifié, y a aucune méthode de ce nom dans toute l'api java !


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-10-2003 à 14:08:09    

benou a écrit :


pkoi il te coause de 'sun.awt.shell.Win32ShellFolder' ?? c'est sûr un file que tu essayes d'appeler la méthode ! [:mlc]
 
de toute façon j'ai vérifié, y a aucune méthode de ce nom dans toute l'api java !


 
et le lien que je te donne juste au dessus ?  :whistle:

Reply

Marsh Posté le 29-10-2003 à 14:08:09   

Reply

Marsh Posté le 29-10-2003 à 14:10:23    


ben tu l'utilises n'importe comment cette méthode !!! :/
 

Code :
  1. int retval = fileChooser.showDialog(fileChooser, null);
  2.  
  3.    if(retval == JFileChooser.APPROVE_OPTION) {
  4.      String fichier = fileChooser.getSelectedFile().getName();
  5.      String p = fileChooser.getSelectedFile().getPath();
  6.      String tst = buffer.getPath();
  7.      String ap = FileUtil.getRelativePathForwardSlash(fileChooser.getSelectedFile().getAbsolutePath(), tst);
  8.      textArea.setSelectedText(ap);
  9.    }

 
 
ca devrait mieux marcher ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-10-2003 à 14:10:49    

Hermes le Messager a écrit :


et le lien que je te donne juste au dessus ?  :whistle:  


arrête de poster en même temps que moi :o


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-10-2003 à 14:11:00    

Hermes le Messager a écrit :


et le lien que je te donne juste au dessus ?  :whistle:  


C'est pas dans le SDK, c'est un utilitaire :o Tu l'as chopée où, cette classe FileUtil ? T'as un JAR qui va avec ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 29-10-2003 à 14:12:31    

benou a écrit :


ben tu l'utilises n'importe comment cette méthode !!! :/
 

Code :
  1. int retval = fileChooser.showDialog(fileChooser, null);
  2.  
  3.    if(retval == JFileChooser.APPROVE_OPTION) {
  4.      String fichier = fileChooser.getSelectedFile().getName();
  5.      String p = fileChooser.getSelectedFile().getPath();
  6.      String tst = buffer.getPath();
  7.      String ap = FileUtil.getRelativePathForwardSlash(fileChooser.getSelectedFile().getAbsolutePath(), tst);
  8.      textArea.setSelectedText(ap);
  9.    }

 
 
ca devrait mieux marcher ...
 


 
ça fait 2 jours que je fais du java...  [:yaisse2]  :lol:  (En tous cas merci ;) )

Reply

Marsh Posté le 29-10-2003 à 14:12:49    

Taiche a écrit :


C'est pas dans le SDK, c'est un utilitaire :o Tu l'as chopée où, cette classe FileUtil ? T'as un JAR qui va avec ?


ben nan mais il essaye de l'appeler sur java.io.File avec un paramêtre alors que c'est une méthode static à 2 paramêtres, alors ca marche beaucoup moins bien, forcément ([:cherrytree1])


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-10-2003 à 14:20:09    

Humm, il me dit ça maintenant... :
 

Citation :

Typed variable declaration : Attempt to invoke method: getRelativePathForwardSlash() on undefined variable or class name: FileUtil : at Line: 66 :

Reply

Marsh Posté le 29-10-2003 à 14:23:14    

Hermes le Messager a écrit :

Humm, il me dit ça maintenant... :
 

Citation :

Typed variable declaration : Attempt to invoke method: getRelativePathForwardSlash() on undefined variable or class name: FileUtil : at Line: 66 :




ouais mais bon, là t'as oublié de passer par la case départ :o
 
faut que tu ajoutes "import com.cotsec.util.io.FileUtil;" en haut de ta classe ...  :pfff:


Message édité par benou le 29-10-2003 à 14:29:51

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-10-2003 à 14:30:24    

Ne t'énerve pas. :)  
 
Tu as raison, je ne devrais pas poser toutes ces questions puisque j'ai de grosses lacunes (et c'est bien normal, puisque je débute complêtement pour le java).
Si je grille les étapes, c'est pour la bonne cause : je fais des plugins pour jEdit. ça ne m'empêchera pas de faire ce qu'il faut pour manger toutes les bases dont j'ai besoin.
 
Ceci dit, j'avais bien fait ça :
 

Code :
  1. import java.awt.event.*;
  2. import java.io.*;
  3. import javax.swing.*;
  4. import java.lang.*;
  5. import com.cotsec.util.io.FileUtil.*;
  6. JButton fileButton = new JButton("Open" );
  7.   JFileChooser fileChooser = new JFileChooser(buffer.getPath());
  8.  
  9.   JScrollPane scrollPane = new JScrollPane();
  10.   JTextArea textAreas = new JTextArea();
  11.   String fichierContenu = "";
  12.     fileChooser.setSize(300, 200);
  13.  
  14.      int retval = fileChooser.showDialog(fileChooser, null); 
  15.    
  16.      if(retval == JFileChooser.APPROVE_OPTION) { 
  17.          String fichier = fileChooser.getSelectedFile().getName(); 
  18.          String p = fileChooser.getSelectedFile().getPath(); 
  19.          String tst = buffer.getPath(); 
  20.          String ap = FileUtil.getRelativePathForwardSlash(fileChooser.getSelectedFile().getAbsolutePath(), tst); 
  21.          textArea.setSelectedText(ap); 
  22.      }

Reply

Marsh Posté le 29-10-2003 à 14:39:42    


je m'ennerve pas ...  
c'est juste que là c'est la base de la base ...
 
relis bien ce que j'ai mis :  
import com.cotsec.util.io.FileUtil;
 
pas de .* à la fin !
 


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-10-2003 à 15:02:22    

:D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-10-2003 à 15:03:04    

à dans 2 minutes :hello:
(il faut foutre la class dans le classpath - relativement à son package)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed