PROXY HTTP AVEC LE JOURNAL POUR CHAQUE UTILISATEUR
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
16 août 2006 à 13:22
souabni_yassine
Messages postés5Date d'inscriptionvendredi 21 septembre 2007StatutMembreDernière intervention28 février 2009
-
20 janv. 2008 à 11:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
souabni_yassine
Messages postés5Date d'inscriptionvendredi 21 septembre 2007StatutMembreDernière intervention28 février 2009 20 janv. 2008 à 11:41
Bonjour,
je n'arrive pas a le faire fonctionner correctement,
je m'explique:
j'ai changé le chemin du raccourci,
j'ai corrigé comme prévu le .bat,
j'exécute, mon CPU s'affolle un peu
(sans doute à cause des threds...),
je clique sur demarrer,
j'ajoute une URL dans la blackListe,
j'ouvre mon naviguateur j'y insère l'url,
appuie sur entrée et là le site s'affiche
quand meme ...??
Il marche pour vous tous d'ares ce que je lis ....
Je loupe quelque chose c'est sur mais quoi???
besoin d'aide s'il vous plait.
-----------------Juste pour info----------------------
1)J'utilise une connexion bas débit avec modem
2)j'ai configuré mon navigateur I.E en y mettant
l'@ip du proxy (127.0.0.1).
est ce que le probleme est du au fait que je met
l'@ de la bcle locale comme @ proxy....????
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 21 août 2006 à 12:52
Cool un 'derivated work' de ma source ! lol
Bon courage ;-)
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 17 août 2006 à 15:00
Salut,
Bah de rien, je pense que c'est pour partager ton savoir et essayer d'evoluer que tu a posté cette source donc il n'y a pas de raison que l'on ne t'aide pas dans ce sens.
petite correction concernant la methode listImage(...) enfaite c'est un copier collé d'un de mes projet perso que j'ai en cours donc pour toi il est plus logique de la renomer en listFiles
cs_hoavinh
Messages postés11Date d'inscriptionvendredi 19 août 2005StatutMembreDernière intervention17 août 2006 17 août 2006 à 14:52
Merci encore tes remarques!!!
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 17 août 2006 à 12:26
Salut,
il est normale que tu est ce genre d'erreurs vu que quand tu fais cmd.exe /c start "+path+"\" si le path contient des espaces il vont etre consideré comme des arguments et non comme fesant parti du path cela dit une solution pour eviter ça serait de les mettrent entre quotes soit cmd.exe /c start ""+path+""\".
ence qui concerner Runtime.getRuntime().exec("cmd.exe /c start "+path+"\" fichier.doc); il n'y a pas de vraie solution portable si tu concerve cette façon de faire ce pendand tu peux aisément remplacer ce bout de code par (vu que ce n'est pas un vrai .doc reste en .txt):
private void consul_journalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_consul_journalActionPerformed
new FileViewer(this).setVisible(true);
}//GEN-LAST:event_consul_journalActionPerformed
ensuite il te faut changer la ligne 95 de Automatique.java par String pathTmp = FileViewer.PATH + File.separator + formatter.format(dateDuJour);
la ligne ~389 du fichier Fenetre.java par new File(FileViewer.PATH).mkdir();
la ligne ~360 du fichier Fenetre.java par String pathTmp = FileViewer.PATH + File.separator +formatter.format(dateDuJour);
et utiliser cette classe (un peut long mais tu reste portable comme ça (colle le code dans une classe que tu appels FileViewer.java)
File root = new File(PATH);
MFile mroot = new MFile(root.getName(),
root.getAbsolutePath(), root.getParent());
MFile.changeDir(modelDir, mroot);
MFile.listImage(modelFile, mroot);
}
/**
* Recuperation et initialisation de la liste contenant les repertoires
* @return listDir
*/
private JList getListDir() {
if(listDir == null){
listDir = new JList();
listDir.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listDir.addListSelectionListener(this);
listDir.setModel(new DefaultListModel());
}
return listDir;
}
/**
* Recuperation et initialisation de la liste contenant les fichiers
* @return listFile
*/
private JList getListFile() {
if(listFile == null){
listFile = new JList();
listFile.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listFile.addListSelectionListener(this);
listFile.setModel(new DefaultListModel());
}
return listFile;
}
/**
* Recuperation et initialisation du split central
* Ce split contient le panel avec l'image et le slipt de choix du repertoire et de l'image
* @return splitCenter
*/
private JSplitPane getSplitCenter() {
if(splitCenter == null){
splitCenter = new JSplitPane();
splitCenter.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
//taille de la barre qui permet d'agrandire ou reduire la zone
splitCenter.setDividerSize(5);
//decoupe les sections a 70% de la taille pour avoir une meilleur repartition
splitCenter.setResizeWeight(0.3);
splitCenter.setRightComponent(new JScrollPane(getTextArea()));
splitCenter.setLeftComponent(getSplitLeft());
}
return splitCenter;
}
/**
* Recuperation et initialisation du split de gauche
* Ce split contient la liste des repertoires et la liste des images relatif au repertoire
* @return splitLeft
*/
private JSplitPane getSplitLeft() {
if(splitLeft == null){
splitLeft = new JSplitPane();
splitLeft.setOrientation(JSplitPane.VERTICAL_SPLIT);
//taille de la barre qui permet d'agrandire ou reduire la zone
splitLeft.setDividerSize(5);
//decoupe les sections a 50% de la taille pour avoir une meilleur repartition
splitLeft.setResizeWeight(0.5);
splitLeft.setLeftComponent(new JScrollPane(getListDir()));
splitLeft.setRightComponent(new JScrollPane(getListFile()));
}
return splitLeft;
}
/**
* Recuperation et initialisation de la liste contenant les fichiers
* @return textArea
*/
public JTextArea getTextArea() {
if(textArea == null){
textArea = new JTextArea();
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
textArea.setEditable(false);
}
return textArea;
}
public void valueChanged(ListSelectionEvent e) {
if(e.getSource().equals(getListDir())){
Object obj = getListDir().getSelectedValue();
if(obj != null){//petit teste pour le fun
if(obj instanceof MFile){//petit teste pour le cast
MFile mfile = (MFile)obj;
DefaultListModel modelDir = (DefaultListModel)getListDir().getModel();
MFile.changeDir(modelDir, mfile);
//on rempli la liste contenant les fichers image si il y en a
DefaultListModel modelFile = (DefaultListModel)getListFile().getModel();
MFile.listImage(modelFile, mfile);
}
}
}else if(e.getSource().equals(getListFile())){//on affiche le text
Object obj = getListFile().getSelectedValue();
if(obj != null){//petit teste pour le fun
if(obj instanceof MFile){//petit teste pour le cast
MFile mfile = (MFile)obj;
String path = mfile.getAbsolutePath();
if(path != null && path.trim().compareTo("") != 0)//petit test pour eviter de faire le travail pour rien
MFile.readFile(getTextArea(), mfile.getAbsolutePath());
}
}
}
}
/**
* Cette classe permet une utilisation plus simple de la
* JListe contenant les repertoires elle permet egalement de remplire les listes
*
*/
public static class MFile {
public static final String RETURN_LABEL = "..";
private String name = "";
private String absolutePath = "";
private String parent = "";
public MFile(){
name = "";
absolutePath = "";
parent = "";
}
/**
* @return Retourne le nom
*/
public String getName() {
return name;
}
/**
* Change le nom
* @param name le nouveau nom
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Retourne le chemin absolue
*/
public String getAbsolutePath() {
return absolutePath;
}
/**
* Change le chemin absolue
* @param absolutePath le nouveau chemin
*/
public void setAbsolutePath(String absolutePath) {
this.absolutePath = absolutePath;
}
/**
* @return Retourne le parent ou null si l'on est deja dans un root dir
*/
public String getParent() {
return parent;
}
/**
* Change le parent
* @param parent le noveau parent
*/
public void setParent(String parent) {
this.parent = parent;
}
/**
* @return Retourne le nom
*/
public String toString(){
return getName();
}
/**
* Change le repertoire courrant
* @param model le model ou ajouter les entree
* @param mroot le root dir
*/
public static void changeDir(DefaultListModel model, MFile mroot){
model.clear();//on supprime toute les entre deja presente
if(mroot.getName().compareTo(RETURN_LABEL) == 0){//on demande un retour arriere
if(mroot.getParent() != null){//si il y a toujour un parent on reviens
File root = new File(mroot.getParent());
//ici on ajoute toujour le parent comme etant le parent du parent pour avoir un affichage logique
model.addElement(new MFile(RETURN_LABEL,
mroot.getAbsolutePath(), root.getParent()));
for(File f : root.listFiles())
if(f.isDirectory() && f.canRead()){
File parent = f.getParentFile();
//on ajoute le nouveau chemin
model.addElement(new MFile(f.getName(),
f.getAbsolutePath(), parent.getParent()));
}
}else{//si il n'y a plus de parents on liste les root dir
for(File f : File.listRoots())
//pour le root le nom doit etre le chemin
model.addElement(new MFile(f.getAbsolutePath(),
f.getAbsolutePath(), f.getParent()));
}
} else{//on continue notre chemin
File root = new File(mroot.getAbsolutePath());
model.addElement(new MFile(RETURN_LABEL,
mroot.getAbsolutePath(), mroot.getParent()));
for(File f : root.listFiles())
if(f.isDirectory() && f.canRead())
model.addElement(new MFile(f.getName(),
f.getAbsolutePath(), f.getParent()));
}
}
/**
* Ajoute les images a la liste image celon le root dir
* @param model le model ou ajouter les entree
* @param mroot le root dir
*/
public static void listImage(DefaultListModel model, MFile mroot){
model.clear();
File root = new File(mroot.getAbsolutePath());
for(File f : root.listFiles())//on teste tout les fichiers
//si c'est bien un fichier et que l'on peut lire l'image(question de droits)
if(f.isFile() && f.canRead() && f.getName().endsWith(".txt")){//le fichier est valide
File parent = f.getParentFile();
model.addElement(new MFile(f.getName(),
f.getAbsolutePath(), parent.getParent()));
}
}
public static void readFile(JTextArea area, String filename){
try {
BufferedReader buffInp = new BufferedReader(
new InputStreamReader(new FileInputStream(filename)));
String s = "";
String newLine = System.getProperty("line.separator");
while(true){
try {
s = buffInp.readLine();
if(s == null)//plus rien a lire
break;
area.append(s + newLine);
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
cs_larsson
Messages postés41Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention 8 juin 2007 17 août 2006 à 10:23
Hoavinh
beau boulot, pour une premiere sources.
je suis d'accord sur ce que Twinuts a dit, mais n'exagerons pas sur ces details, car on risque de passer a coté de la plaque. les details sont trés important, mais il ne faut pas planter là.
ciao j'ai bien apprécié la souce
cs_hoavinh
Messages postés11Date d'inscriptionvendredi 19 août 2005StatutMembreDernière intervention17 août 2006 17 août 2006 à 10:21
saluit,
quand je teste System.getProperty("user.home");
//il affiche l'erreur: Windows ne trouve pas "C:\Documents" ....
Et tandis que le répertoire c'est "C:\Documents and Settings" ?? je comprends pas !!!!!!!!
cs_hoavinh
Messages postés11Date d'inscriptionvendredi 19 août 2005StatutMembreDernière intervention17 août 2006 17 août 2006 à 10:16
Saluit,
Concerné la ligne du code
Runtime.getRuntime().exec("cmd.exe /c start "+path+"\");
Est ce que tu as d'autre méthode qui peut fonctionner sous windows et souw linux? si oui, montre-moi!!
Merci d'avance
cs_hoavinh
Messages postés11Date d'inscriptionvendredi 19 août 2005StatutMembreDernière intervention17 août 2006 16 août 2006 à 18:57
merci,
quand Je fais le code, c'est dévelopé avec netbeans donc le ficher manifes c'est pas moi qui cree, je compte ça fontionne sous windows, pas rendu compte sous linux
Merci encore tes remarques
La connaisance appartient à tout le monde!
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 16 août 2006 à 18:41
"ce qui t'évite de rendre importable ta source sous d'autre os que windows et t'évite par la même occasion de pénaliser java ..."
je parle du Runtime.getRuntime().exec("cmd.exe /c start "+path+"\"); (cmd.exe n'existe pas sous les unix)
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 16 août 2006 à 18:38
Salut,
concernant mes remarques ci-dessus voici des solutions :
1 - change ton manifest par : (comme ca tu garde l'utilisation de java -jar ProxyServer.jar)
Manifest-Version: 1.0
Class-Path: lib/swing-layout-1.0.jar
X-COMMENT: Main-Class will be added automatically by build
2 -le répertoire : "C:\\Journal_Gestions_Utilisateurs"
tu peux faire :
public static final String path = System.getProperty("user.home") + File.separator + "Journal_Gestions_Utilisateurs";
même pour les utilisateurs windows le mieux c'est de ne pas le mettre a la racine mais soit
dans le home : System.getProperty("user.home");
dans le répertoire courant : System.getProperty("user.dir");
cela évite d'avoir des erreur si ils n'ont pas de disque C: mais exemple un D: (c'est rare mais ca arrive);
concernant tes \\ oublie et utilise File.separator qui reste portable
donc tu peux remplacer les lignes suivantes :
369 File fTmp new File(pathTmp+"\"+ AdrIp+".doc"); par File fTmp new File(pathTmp+File.separator+ AdrIp+".doc");
Automatique.java
96 String pathTmp Fenetre.path + "\" + formatter.format(dateDuJour); par String pathTmp Fenetre.path + File.separator + formatter.format(dateDuJour);
105 File fTmp new File(pathTmp+"\"+ AdrIp+".doc"); par File fTmp new File(pathTmp+File.separator+ AdrIp+".doc");
maintenant concernant la création du .doc pourquoi un .doc qui d'après ce que je vois de sa création n'en est pas vraiment un, pour quoi ne pas créer un .csv qui peut être ouvert même par excel (et OpenOffice) comme ça l'utilisateur peut avoir un vrai journal et le mettre en page comme il le faut et toi de ton coté pour le bouton consulter le journal bah tu nous ouvre une fenêtre contenant un JTable par exemple avec les données mise en page ce qui t'évite de rendre importable ta source sous d'autre os que windows et t'évite par la même occasion de pénaliser java ...
cs_hoavinh
Messages postés11Date d'inscriptionvendredi 19 août 2005StatutMembreDernière intervention17 août 2006 16 août 2006 à 17:54
Saluit,
Comment tu peux faire avec d'autre façon?
Moi je suis encore débutant
cs_hoavinh
Messages postés11Date d'inscriptionvendredi 19 août 2005StatutMembreDernière intervention17 août 2006 16 août 2006 à 17:49
Saluit,
Je comprends pas trop tes remarques:"c'est vraiment gacher la puissance de java que d'ecrire de tel choses". Expliquez plus clairement STP!
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 16 août 2006 à 13:25
Salut,
autre remaque voir ce qui suit dans un code java ne donne meme pas envie de le tester c'est vraiment gacher la puissance de java que d'ecrire de tel choses
public static final String path = "C:\\Journal_Gestions_Utilisateurs"
Runtime.getRuntime().exec("cmd.exe /c start "+path+"\");
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 16 août 2006 à 13:22
Salut,
qd tu utilise un jar qui depends d'autre jar renseigne la balise Class-Path du fichier manifest et comme ca tu peux concerver les avantage de la commande java -jar monjar.jar et sous win tu conserve le double clic pour l'execution
le principe de cette balise est simple si tu as un jar en guise d'archive ton manifest ressemble à :
IMPORTANT :
- Que tu sois sous win ou non ne met pas de \ dans ton manifest mais concerve les /
- les espaces avant et apres chaque virgule sont obligatoire
20 janv. 2008 à 11:41
je n'arrive pas a le faire fonctionner correctement,
je m'explique:
j'ai changé le chemin du raccourci,
j'ai corrigé comme prévu le .bat,
j'exécute, mon CPU s'affolle un peu
(sans doute à cause des threds...),
je clique sur demarrer,
j'ajoute une URL dans la blackListe,
j'ouvre mon naviguateur j'y insère l'url,
appuie sur entrée et là le site s'affiche
quand meme ...??
Il marche pour vous tous d'ares ce que je lis ....
Je loupe quelque chose c'est sur mais quoi???
besoin d'aide s'il vous plait.
-----------------Juste pour info----------------------
1)J'utilise une connexion bas débit avec modem
2)j'ai configuré mon navigateur I.E en y mettant
l'@ip du proxy (127.0.0.1).
est ce que le probleme est du au fait que je met
l'@ de la bcle locale comme @ proxy....????
21 août 2006 à 12:52
Bon courage ;-)
17 août 2006 à 15:00
Bah de rien, je pense que c'est pour partager ton savoir et essayer d'evoluer que tu a posté cette source donc il n'y a pas de raison que l'on ne t'aide pas dans ce sens.
petite correction concernant la methode listImage(...) enfaite c'est un copier collé d'un de mes projet perso que j'ai en cours donc pour toi il est plus logique de la renomer en listFiles
17 août 2006 à 14:52
17 août 2006 à 12:26
il est normale que tu est ce genre d'erreurs vu que quand tu fais cmd.exe /c start "+path+"\" si le path contient des espaces il vont etre consideré comme des arguments et non comme fesant parti du path cela dit une solution pour eviter ça serait de les mettrent entre quotes soit cmd.exe /c start ""+path+""\".
ence qui concerner Runtime.getRuntime().exec("cmd.exe /c start "+path+"\" fichier.doc); il n'y a pas de vraie solution portable si tu concerve cette façon de faire ce pendand tu peux aisément remplacer ce bout de code par (vu que ce n'est pas un vrai .doc reste en .txt):
private void consul_journalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_consul_journalActionPerformed
new FileViewer(this).setVisible(true);
}//GEN-LAST:event_consul_journalActionPerformed
ensuite il te faut changer la ligne 95 de Automatique.java par String pathTmp = FileViewer.PATH + File.separator + formatter.format(dateDuJour);
la ligne ~389 du fichier Fenetre.java par new File(FileViewer.PATH).mkdir();
la ligne ~360 du fichier Fenetre.java par String pathTmp = FileViewer.PATH + File.separator +formatter.format(dateDuJour);
et utiliser cette classe (un peut long mais tu reste portable comme ça (colle le code dans une classe que tu appels FileViewer.java)
package proxyserver;
import java.awt.Frame;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.DefaultListModel;
import javax.swing.JDialog;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class FileViewer extends JDialog implements ListSelectionListener{
private static final long serialVersionUID = 3662231313575386271L;
public static final String PATH = System.getProperty("user.home")
+ File.separator
+ "Journal_Gestions_Utilisateurs";
private JSplitPane splitLeft = null;
private JSplitPane splitCenter = null;
private JList listFile = null;
private JList listDir = null;
private JTextArea textArea = null;
public FileViewer(){
super();
initialize();
}
public FileViewer(Frame owner){
super(owner, true);
initialize();
}
private void initialize(){
setSize(800, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setContentPane(getSplitCenter());
File file = new File(PATH);
if(!file.exists()) file.mkdirs();
DefaultListModel modelDir = (DefaultListModel)getListDir().getModel();
DefaultListModel modelFile = (DefaultListModel)getListFile().getModel();
File root = new File(PATH);
MFile mroot = new MFile(root.getName(),
root.getAbsolutePath(), root.getParent());
MFile.changeDir(modelDir, mroot);
MFile.listImage(modelFile, mroot);
}
/**
* Recuperation et initialisation de la liste contenant les repertoires
* @return listDir
*/
private JList getListDir() {
if(listDir == null){
listDir = new JList();
listDir.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listDir.addListSelectionListener(this);
listDir.setModel(new DefaultListModel());
}
return listDir;
}
/**
* Recuperation et initialisation de la liste contenant les fichiers
* @return listFile
*/
private JList getListFile() {
if(listFile == null){
listFile = new JList();
listFile.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listFile.addListSelectionListener(this);
listFile.setModel(new DefaultListModel());
}
return listFile;
}
/**
* Recuperation et initialisation du split central
* Ce split contient le panel avec l'image et le slipt de choix du repertoire et de l'image
* @return splitCenter
*/
private JSplitPane getSplitCenter() {
if(splitCenter == null){
splitCenter = new JSplitPane();
splitCenter.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
//taille de la barre qui permet d'agrandire ou reduire la zone
splitCenter.setDividerSize(5);
//decoupe les sections a 70% de la taille pour avoir une meilleur repartition
splitCenter.setResizeWeight(0.3);
splitCenter.setRightComponent(new JScrollPane(getTextArea()));
splitCenter.setLeftComponent(getSplitLeft());
}
return splitCenter;
}
/**
* Recuperation et initialisation du split de gauche
* Ce split contient la liste des repertoires et la liste des images relatif au repertoire
* @return splitLeft
*/
private JSplitPane getSplitLeft() {
if(splitLeft == null){
splitLeft = new JSplitPane();
splitLeft.setOrientation(JSplitPane.VERTICAL_SPLIT);
//taille de la barre qui permet d'agrandire ou reduire la zone
splitLeft.setDividerSize(5);
//decoupe les sections a 50% de la taille pour avoir une meilleur repartition
splitLeft.setResizeWeight(0.5);
splitLeft.setLeftComponent(new JScrollPane(getListDir()));
splitLeft.setRightComponent(new JScrollPane(getListFile()));
}
return splitLeft;
}
/**
* Recuperation et initialisation de la liste contenant les fichiers
* @return textArea
*/
public JTextArea getTextArea() {
if(textArea == null){
textArea = new JTextArea();
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
textArea.setEditable(false);
}
return textArea;
}
public void valueChanged(ListSelectionEvent e) {
if(e.getSource().equals(getListDir())){
Object obj = getListDir().getSelectedValue();
if(obj != null){//petit teste pour le fun
if(obj instanceof MFile){//petit teste pour le cast
MFile mfile = (MFile)obj;
DefaultListModel modelDir = (DefaultListModel)getListDir().getModel();
MFile.changeDir(modelDir, mfile);
//on rempli la liste contenant les fichers image si il y en a
DefaultListModel modelFile = (DefaultListModel)getListFile().getModel();
MFile.listImage(modelFile, mfile);
}
}
}else if(e.getSource().equals(getListFile())){//on affiche le text
Object obj = getListFile().getSelectedValue();
if(obj != null){//petit teste pour le fun
if(obj instanceof MFile){//petit teste pour le cast
MFile mfile = (MFile)obj;
String path = mfile.getAbsolutePath();
if(path != null && path.trim().compareTo("") != 0)//petit test pour eviter de faire le travail pour rien
MFile.readFile(getTextArea(), mfile.getAbsolutePath());
}
}
}
}
/**
* Cette classe permet une utilisation plus simple de la
* JListe contenant les repertoires elle permet egalement de remplire les listes
*
*/
public static class MFile {
public static final String RETURN_LABEL = "..";
private String name = "";
private String absolutePath = "";
private String parent = "";
public MFile(){
name = "";
absolutePath = "";
parent = "";
}
public MFile(String name, String absolutePath, String parent){
this.name = name;
this.absolutePath = absolutePath;
this.parent = parent;
}
/**
* @return Retourne le nom
*/
public String getName() {
return name;
}
/**
* Change le nom
* @param name le nouveau nom
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Retourne le chemin absolue
*/
public String getAbsolutePath() {
return absolutePath;
}
/**
* Change le chemin absolue
* @param absolutePath le nouveau chemin
*/
public void setAbsolutePath(String absolutePath) {
this.absolutePath = absolutePath;
}
/**
* @return Retourne le parent ou null si l'on est deja dans un root dir
*/
public String getParent() {
return parent;
}
/**
* Change le parent
* @param parent le noveau parent
*/
public void setParent(String parent) {
this.parent = parent;
}
/**
* @return Retourne le nom
*/
public String toString(){
return getName();
}
/**
* Change le repertoire courrant
* @param model le model ou ajouter les entree
* @param mroot le root dir
*/
public static void changeDir(DefaultListModel model, MFile mroot){
model.clear();//on supprime toute les entre deja presente
if(mroot.getName().compareTo(RETURN_LABEL) == 0){//on demande un retour arriere
if(mroot.getParent() != null){//si il y a toujour un parent on reviens
File root = new File(mroot.getParent());
//ici on ajoute toujour le parent comme etant le parent du parent pour avoir un affichage logique
model.addElement(new MFile(RETURN_LABEL,
mroot.getAbsolutePath(), root.getParent()));
for(File f : root.listFiles())
if(f.isDirectory() && f.canRead()){
File parent = f.getParentFile();
//on ajoute le nouveau chemin
model.addElement(new MFile(f.getName(),
f.getAbsolutePath(), parent.getParent()));
}
}else{//si il n'y a plus de parents on liste les root dir
for(File f : File.listRoots())
//pour le root le nom doit etre le chemin
model.addElement(new MFile(f.getAbsolutePath(),
f.getAbsolutePath(), f.getParent()));
}
} else{//on continue notre chemin
File root = new File(mroot.getAbsolutePath());
model.addElement(new MFile(RETURN_LABEL,
mroot.getAbsolutePath(), mroot.getParent()));
for(File f : root.listFiles())
if(f.isDirectory() && f.canRead())
model.addElement(new MFile(f.getName(),
f.getAbsolutePath(), f.getParent()));
}
}
/**
* Ajoute les images a la liste image celon le root dir
* @param model le model ou ajouter les entree
* @param mroot le root dir
*/
public static void listImage(DefaultListModel model, MFile mroot){
model.clear();
File root = new File(mroot.getAbsolutePath());
for(File f : root.listFiles())//on teste tout les fichiers
//si c'est bien un fichier et que l'on peut lire l'image(question de droits)
if(f.isFile() && f.canRead() && f.getName().endsWith(".txt")){//le fichier est valide
File parent = f.getParentFile();
model.addElement(new MFile(f.getName(),
f.getAbsolutePath(), parent.getParent()));
}
}
public static void readFile(JTextArea area, String filename){
try {
BufferedReader buffInp = new BufferedReader(
new InputStreamReader(new FileInputStream(filename)));
String s = "";
String newLine = System.getProperty("line.separator");
while(true){
try {
s = buffInp.readLine();
if(s == null)//plus rien a lire
break;
area.append(s + newLine);
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
17 août 2006 à 10:23
beau boulot, pour une premiere sources.
je suis d'accord sur ce que Twinuts a dit, mais n'exagerons pas sur ces details, car on risque de passer a coté de la plaque. les details sont trés important, mais il ne faut pas planter là.
ciao j'ai bien apprécié la souce
17 août 2006 à 10:21
quand je teste System.getProperty("user.home");
//il affiche l'erreur: Windows ne trouve pas "C:\Documents" ....
Et tandis que le répertoire c'est "C:\Documents and Settings" ?? je comprends pas !!!!!!!!
17 août 2006 à 10:16
Concerné la ligne du code
Runtime.getRuntime().exec("cmd.exe /c start "+path+"\");
Est ce que tu as d'autre méthode qui peut fonctionner sous windows et souw linux? si oui, montre-moi!!
Merci d'avance
16 août 2006 à 18:57
quand Je fais le code, c'est dévelopé avec netbeans donc le ficher manifes c'est pas moi qui cree, je compte ça fontionne sous windows, pas rendu compte sous linux
Merci encore tes remarques
La connaisance appartient à tout le monde!
16 août 2006 à 18:41
je parle du Runtime.getRuntime().exec("cmd.exe /c start "+path+"\"); (cmd.exe n'existe pas sous les unix)
16 août 2006 à 18:38
concernant mes remarques ci-dessus voici des solutions :
1 - change ton manifest par : (comme ca tu garde l'utilisation de java -jar ProxyServer.jar)
Manifest-Version: 1.0
Class-Path: lib/swing-layout-1.0.jar
X-COMMENT: Main-Class will be added automatically by build
2 -le répertoire : "C:\\Journal_Gestions_Utilisateurs"
tu peux faire :
public static final String path = System.getProperty("user.home") + File.separator + "Journal_Gestions_Utilisateurs";
même pour les utilisateurs windows le mieux c'est de ne pas le mettre a la racine mais soit
dans le home : System.getProperty("user.home");
dans le répertoire courant : System.getProperty("user.dir");
cela évite d'avoir des erreur si ils n'ont pas de disque C: mais exemple un D: (c'est rare mais ca arrive);
concernant tes \\ oublie et utilise File.separator qui reste portable
donc tu peux remplacer les lignes suivantes :
Fenetre.java
360 String pathTmp = path + "\"+formatter.format(dateDuJour);
par String pathTmp = path + File.separator +formatter.format(dateDuJour);
369 File fTmp new File(pathTmp+"\"+ AdrIp+".doc"); par File fTmp new File(pathTmp+File.separator+ AdrIp+".doc");
Automatique.java
96 String pathTmp Fenetre.path + "\" + formatter.format(dateDuJour); par String pathTmp Fenetre.path + File.separator + formatter.format(dateDuJour);
105 File fTmp new File(pathTmp+"\"+ AdrIp+".doc"); par File fTmp new File(pathTmp+File.separator+ AdrIp+".doc");
maintenant concernant la création du .doc pourquoi un .doc qui d'après ce que je vois de sa création n'en est pas vraiment un, pour quoi ne pas créer un .csv qui peut être ouvert même par excel (et OpenOffice) comme ça l'utilisateur peut avoir un vrai journal et le mettre en page comme il le faut et toi de ton coté pour le bouton consulter le journal bah tu nous ouvre une fenêtre contenant un JTable par exemple avec les données mise en page ce qui t'évite de rendre importable ta source sous d'autre os que windows et t'évite par la même occasion de pénaliser java ...
16 août 2006 à 17:54
Comment tu peux faire avec d'autre façon?
Moi je suis encore débutant
16 août 2006 à 17:49
Je comprends pas trop tes remarques:"c'est vraiment gacher la puissance de java que d'ecrire de tel choses". Expliquez plus clairement STP!
16 août 2006 à 13:25
autre remaque voir ce qui suit dans un code java ne donne meme pas envie de le tester c'est vraiment gacher la puissance de java que d'ecrire de tel choses
public static final String path = "C:\\Journal_Gestions_Utilisateurs"
Runtime.getRuntime().exec("cmd.exe /c start "+path+"\");
16 août 2006 à 13:22
qd tu utilise un jar qui depends d'autre jar renseigne la balise Class-Path du fichier manifest et comme ca tu peux concerver les avantage de la commande java -jar monjar.jar et sous win tu conserve le double clic pour l'execution
le principe de cette balise est simple si tu as un jar en guise d'archive ton manifest ressemble à :
Main-Class: proxyserver.Fenetre
Class-Path: lib/swing-layout-1.0.jar
et si tu devais en avoir plusieurs il devra ressembler à :
Main-Class: proxyserver.Fenetre
Class-Path: lib/swing-layout-1.0.jar , jar2.jar , jar3.jar
IMPORTANT :
- Que tu sois sous win ou non ne met pas de \ dans ton manifest mais concerve les /
- les espaces avant et apres chaque virgule sont obligatoire