begin process at 2010 03 20 03:15:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

File et accès en écriture refusé


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

File et accès en écriture refusé

vendredi 10 juillet 2009 à 09:15:29 | File et accès en écriture refusé

harleen

Bonjour,

J'ai perdu une journée entière à chercher, googler, tester et je commence maintenant à croire que j'ai fait le tour de toutes les solutions possibles...

Je crée une appli qui permet à un utilisateur de traduire un fichier et de sélectionner l'endroit où il souhaite avoir son fichier traduit : C:\\..., Bureau...
Si l'utilisateur crée son fichier traduit à un endroit où il a suffisamment de droits, cela fonctionne parfaitement.
Seulement, dans le cas où l'utilisateur veut créer son fichier à un endroit où il n'a pas les droits suffisants, j'ai plein de lignes d'erreurs, me disant qu'il ne peut pas écrire ici, ce que je veux, c'est afficher simplement un message d'erreur pour avertir l'utilisateur qu'il ne peut pas écrire à cet endroit, et non pas à chercher à lui accorder ou non quelconque droits...

j'ai tenté plusieurs solutions :
- faire un bloc
try{...}catch(FileNotFoundException){...}
, vu que c'était l'intitulé de l'exception affiché

- utiliser la méthode

canWrite
de la classe File, cette méthode retournant un boolean, afin de dire si le fichier peut être écrit ou non.

- créer ma propre méthode qui utilise canWrite :
publicstaticboolean testEcriture(File f){
if(f.canWrite()){
returntrue;
}
else{
returnfalse;
}
}
Je jugeais cette deuxième et troisième méthode meilleures, mais dans le cas de la troisième méthode, lorsque j'appelle cette méthode à partir de la méthode qui m'intéresse, j'ai toujours un false qui est retourné...qu'il s'agisse d'endroits où l'utilisateur a les droits ou non...

Je suis à l'écoute de toute idée ou aide de votre part,
merci d'avance,

Harleen

vendredi 10 juillet 2009 à 09:23:14 | Re : File et accès en écriture refusé

kirua12

Salut,

dans le bloc catch(FileNotFoundException), tu mets ton message d'erreur.
Montre nous ton code car je vois pas trop où est le pb.


vendredi 10 juillet 2009 à 09:40:46 | Re : File et accès en écriture refusé

harleen

salut et merci pour la rapidité de ta réponse,

Voici le code de ma méthode de traduction :
class TradSimpleListener  implements ActionListener{

        public void actionPerformed(ActionEvent arg0){
            SimpleService();
        }
       
        private void SimpleService(){
            //fichier d'entrée et de sortie en récupérant les contenus des zones de txt
        inputFile = new File(txtlocalPath.getText());
        outputFile = new File(txtSortie.getText());
       
        System.out.println(inputFile);
        System.out.println(outputFile);
       
        //récupérer le contenu de la textBox et traduire   
        // System.setProperty("javax.xml.transform.TransformerFactory",
        //"net.sf.saxon.TransformerFactoryImpl");
       
        //on crée une fabrique de transformeurs
        TransformerFactory factory = TransformerFactory.newInstance();
       
        //fichier xsl de transformation
        File fxsl = new File("transfo.xsl");       
       
        //fichier xml source de type source       
            Source xmlSource = new StreamSource(inputFile);
           
        //nom du fichier de sortie de type Result  :
        //on choisit le constructeur avec File   
           
            Result sortie = new StreamResult(outputFile);
           
        //transformer
        Transformer transformer;
        try {
            //on récupère un transformeur à partir d'une fabrique de transformeurs
            transformer = factory.newTransformer(new StreamSource(fxsl));

            //encoding
            // transformer.setOutputProperty("encoding", "ISO-8859-1");
            transformer.setOutputProperty("encoding", "UTF-8");
           
            //pour l'indentation
            transformer.setOutputProperty(OutputKeys.INDENT,"yes");
           
            /*Utilisation d'un parser DOM ou SAX sans DTD ou xml schema pour la validation,
             * s'il ya une erreur de parsing alors le fichier XML n'est pas bien formé càd NON XML.
             */
            DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();           
            DocumentBuilder constructeur = fabrique.newDocumentBuilder();           
           
            // lecture du contenu du fichier d'entrée XML avec DOM
            File xml = new File(inputFile.getName());
            Document document = constructeur.parse(xml);
           
            /*
            //on vérifie que l'on peut bien écrire à cet endroit en appelant la méthode testEcriture
            if(testEcriture(outputFile)==true){
                System.out.println("bonjour");
            }
            else{
                System.out.println("au revoir");   
            }
            */
            //transformation en prenant en paramètre le fichier xml source et fait le fichier xml de sortie           
            transformer.transform(xmlSource, sortie );
           
            //message informant que la traduction a bien été faite
            message_erreur.setText("Traduction simple effectuée");
            message_erreur.setForeground(Color.green);

            btntradcomplique.setEnabled(false);
            btntradsimple.setEnabled(false);

        }
        catch(FileNotFoundException e){
            System.out.println("hello");
        }
        catch (TransformerConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TransformerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch(SAXException se){
            //C'est un fichier Non Xml
        }catch(IOException ioe){
            ioe.printStackTrace();
        }     
           
        }
       
    }//fin de la classe TradSimpleListener

et voici le message d'erreur :
Error on line 20 of transfo.xsl:
  java.io.FileNotFoundException: C:\test.xml (Accès refusé)


Sachant que transfo.xsl est le fichier de transformation et test.xml, le fichier de sortie que j'aimerai pouvoir créer dans C:\\, et où l'écriture est impossible.
Bien évidemment, je ne veux pas lui accorder quelconque droits d'écriture, mais simplement lui mettre un message d'erreur l'informant qu'il ne peut pas écrire ici.
Mais pourquoi n'ai-je pas cette erreur lorsque je crée mon fichier de traduction à un endroit où je peux écrire (mes documents par exemple)?

merci d'avance

Harleen

vendredi 10 juillet 2009 à 09:47:02 | Re : File et accès en écriture refusé

kirua12

t'es sûr que tu passes dans le bon bloc catch ? Ta FileNotFoundException n'est-elle pas encapsulée dans une autre exception ?
Peux tu mettre le message d'erreur en entier ?
J'ai fait un test bidon et le catch sur FileNotFoundException marche très bien (c'est évident d'ailleurs). Par contre le test d'écriture avec la méthode canWrite() n'est pas suffisant (elle me renvoie true alors que je n'ai pas les droits d'écriture)


vendredi 10 juillet 2009 à 10:00:15 | Re : File et accès en écriture refusé

harleen

je suis d'accord avec toi concernant le canWrite qui renvoie un boolean, j'ai toujours le même booléen retourné que l'utilisateur ait le droit ou non d'écriture...

Pourrais-tu me montrer le test que tu as fait, s'il te plait?
Je ne peux retirer aucune exception ici, car j'utilise un parser XML ou encore transformer et ces catch sont nécessaires

Harleen

vendredi 10 juillet 2009 à 10:05:45 | Re : File et accès en écriture refusé

kirua12

Ce n'est pas de retirer une exception mais d'être sûr que tu passes dans le bon bloc catch.
Peux tu mettre la log d'erreur en entier ?

try {
  File file = new File("C:/Windows");
  System.out.println(file.canWrite());
  file = new File("C:/Windows/fr-fr.log");
  System.out.println(file.canWrite());
  FileOutputStream fileOutputStream = new FileOutputStream(new File("C:/Windows/fr-fr.log"));
} catch (FileNotFoundException e) {
  e.printStackTrace();
  System.out.println("t'as pas le droit !!!!!!!!!!!");
 }

vendredi 10 juillet 2009 à 10:15:16 | Re : File et accès en écriture refusé

harleen

juste une question par rapport à ton test, tu fais un canWrite sur le répertoire et non sur le fichier pour s'assurer que l'utilisateur a bien les droites sur le répertoire et non sur le fichier?

Harleen

vendredi 10 juillet 2009 à 10:24:43 | Re : File et accès en écriture refusé

kirua12

Je voulais voir si ça faisait une différence mais ça me renvoie true dans les 2 cas.


vendredi 10 juillet 2009 à 16:31:13 | Re : File et accès en écriture refusé

harleen

Salut,

après plusieurs heures de recherche, j'ai finalement trouvé la solution en me servant de la méthode createNewFile() de la classe File.
Le test consiste à créer un fichier temporaire et de voir ainsi si l'utilisateur a les droits en écriture.
J'ai longuement cherché du côté de canWrite(), mais j'ai toujours eu le même souci que toi.

Merci pour tes pistes et ton aide,
bonne continuation


Harleen



Cette discussion est classée dans : fichier, file, utilisateur, méthode, endroit


Répondre à ce message

Sujets en rapport avec ce message

dans la classe File -> methode d'acces a un fichier [ par marsrepart ] re -- helloVoilà .. j'ai une string correspondant à un chemin d'accès et j'aimerai savori s'il correspond à un chemin de fichier existant deja.... Je Création de questionnaire par l'utilisateur [ par pascatd ] Pascatje souhaite créer une page qui permette à l'utilisateur de créer un questionnaire dont il précisera le nombre de question, le type de réponse (r Explorateur [ par Polux6 ] Salut, je sui en train d'essayer d faire un double explorateur d fichier. Seulement j'aimerai bien pouvoir (dans l'explorateur) n'avoir seulement que tableau XML, removeRow et raffraichissement [ par Salussipher ] Salut,J'ai deux petites questions à propos des JTable.J'ai une application comprenant plusieurs fenêtre dont une permettant d'afficher sous forme de t creation de profil utilisateur [ par barkahoum ] BonjourJe suis en développement d'un module en jsp.On m'a demandé de faire des profiles utilisateurs . un étudiant pas exemple peut soumettre des rép taille de fichier [ par regi ] Existe t'il une méthode pour convertir simplement la taille en octet d'un fichier obtenue par la méthode "length()" de celui ci en mega octet (ou mega Mettre certaines balises XML dans un fichier a partir d'un arbre DOM [ par Ekik ] Bonjours,Voila mon problème:J'ai un fichier xml, et je dois prendre toutes les balises pour les mettre dans un autre fichier xml. J'ai ce code ici, ouvrir fichier texte et ecrire a la suite [ par anneli ] bonjour,voila j'ai un fichier texte que je creer de la facon suivante:File file =new File ("test.txt");FileWriter fw = new FileWriter(file,true);et qu charger un BufferedImage[] dans un fichier jpeg [ par lesaixol ] Bonjour à tous!voici mon problème: j'ai un ensemble de BufferedImage de taille 15*5. Et je veux obtenir une image 15*15, soit coller 3 de ces Buffered Cration d'un fichier physique [ par Frouf85 ] Bonjour,C'est une question bête mais que je n'arrive pas à résoudre pour le moment.je voulais savoir quel la manip pour créer un fichier physiquement.


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales