IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

java.io.FileNotFoundException: (Access is denied)


Sujet :

Développement Web en Java

  1. #1
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Par défaut java.io.FileNotFoundException: (Access is denied)
    Bonjour.

    Sur une appli en JEE avec Hibernate pour la persistance des données en base, j'importe un fichier CSV dans une table de ma DB.

    Le fichier CSV est sur un dossier de partage d'un serveur distant.

    Avec apli et base en local, pas de problème.
    Appli en local et base sur le serveur, pas de problème.

    Appli sur le serveur et base sur le serveur, j'ai :
    java.io.FileNotFoundException: \\nom\du\repertoire\fichier.csv (Access is denied)

    Voici une partie de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    	private List<Extraction> dataToLines(List<String[]>data) throws java.text.ParseException, IOException{		final List<Extraction> lines = new ArrayList<Extraction>();
     
    		Session s = HibernateUtil.getSession();
    		Transaction tx = s.beginTransaction();
     
    		try {
     
     
    			try {
    				List<Extraction> listLigne = (List<Extraction>) s.createQuery("from Extraction").list();
    				for(Extraction ligne : listLigne) {
    					s.delete(ligne);
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
     
    			String filePath = new File(lien + "\\" + extract.getNomExtract()).getAbsolutePath();
     
    			filePath.concat(extract.getNomExtract());
    			File file = new File(filePath);
     
     
    			fis = new FileInputStream(file);
     
    			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    			Date jour = new Date(file.lastModified());
    			System.out.println(jour);
    			extract.setDateImport(jour);
     
    			s.update(extract);
     
     
     
    			.....................
     
     
    			}
    			tx.commit();
    		}catch(ParseException e) {
    			e.printStackTrace();
    			tx.rollback();
    		}finally {
    			System.err.println("Import terminé");
    			s.close();
    			fis.close();
    		}
     
    		return lines;
    	}
    Merci d'avance.

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Par défaut
    Bonjour,

    Comme ça, je dirai que le process java n'a pas les droits pour accéder à ton fichier sur le serveur.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 80
    Par défaut
    Bonjour,

    - Vérifier les droits d'accès aux fichiers : essayer avec ceci : FilePermission
    - Vérifier le chemin et le nom du fichier

    Bonne journée

  4. #4
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 483
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Si tu es en Java 7 ou +, il est recommandé d'utiliser les try-ressources.

    Ceci permet de simplifier le code, car c'est Java qui s'occupe de fermer les ressources.
    Mieux, tu n'a plus besoin des lignes de codes dans le "finally", lignes de codes casse-gueule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    try(Session s = HibernateUtil.getSession()){
    Et:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    try(fis = new FileInputStream(file)){
    Après, on a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    fis = new FileInputStream(file);
     
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date jour = new Date(file.lastModified());
    System.out.println(jour);
    extract.setDateImport(jour);
     
    s.update(extract);
    Le FileInputStream est ce que l'on appelle un flux.

    Quand tu ouvres un FileInputStream, tu poses automatiquement un verrou.

    Je pense que l'erreur est à la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date jour = new Date(file.lastModified());
    Effectivement, à ce stade là, le fichier est verrouillé.

    Il reste verrouillé jusqu'à ce que le flux soit fermé.

    C'est pour ça qu'il est important de bien fermer les flux, et que c'est mieux d'utiliser le try-ressources plutôt que le try/catch/finally (depuis Java 7).

Discussions similaires

  1. Réponses: 18
    Dernier message: 13/10/2010, 15h36
  2. java.security.AccessControlException: access denied
    Par nezdeboeuf62 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 28/05/2009, 12h18
  3. java.security.AccessControlException: access denied
    Par mcmazigh dans le forum Applets
    Réponses: 1
    Dernier message: 25/08/2008, 17h11
  4. java.security.AccessControlException: access denied
    Par ludonantes dans le forum Applets
    Réponses: 10
    Dernier message: 28/03/2006, 17h44
  5. Réponses: 2
    Dernier message: 27/03/2006, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo