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

Langage Java Discussion :

FileNotFoundException avec File et FileInputStream


Sujet :

Langage Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut FileNotFoundException avec File et FileInputStream
    Bien l'bonsoir par ici,

    Quelqu'un pourrait-il m'expliquer ce comportement étrange ?

    Lorsque j'exécute le code ci-après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    try{
     
    	File f = new File ("C:\\bidon\\test.txt");
     
    	FileInputStream fis = new FileInputStream(f);	
     
    	Log.i("test", fis.toString());
     
    }catch (FileNotFoundException e){
     
    	e.printStackTrace();
     
    }
    j'obtiens l'Exception suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    05-14 22:48:59.255: W/System.err(1157): java.io.FileNotFoundException: /C:\bidon\test.txt
    05-14 22:48:59.255: W/System.err(1157):  at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
    05-14 22:48:59.276: W/System.err(1157):  at java.io.FileInputStream.<init>(FileInputStream.java:77)
    05-14 22:48:59.285: W/System.err(1157):  at com.app.jBidouille.DataChannel.run(DataChannel.java:66)
    05-14 22:48:59.301: W/System.err(1157):  at java.lang.Thread.run(Thread.java:1096)
    Pourtant J'ai vérifié :
    • l'orthographe du chemin et du fichier
    • l’existence du fichier


    D'avance merci pour vos lumières.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Permissions de lecture ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Au niveau du Manifest ou au niveau du File system ?

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    FileSystem
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Je vais vérifier les droits sur le répertoire et le fichier, puis vous direz si ok/pas ok.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Re-bonjour,

    Je viens de refaire un autre test sur un autre fichier que je viens de créer à l'instant manuellement et malgré cela j'ai toujours une erreur FileNotFoundException ; je n'y comprend absolument rien !

    Existe-t'il une manip fiable pour tester les droits sur le dossier \temp ou le fichier toto.txt, voire forcer ces droits à fullopen ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    W/System.err(382): java.io.FileNotFoundException: /C:\temp\toto.txt
    W/System.err(382): 	at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
    W/System.err(382): 	at java.io.FileInputStream.<init>(FileInputStream.java:77)
    W/System.err(382): 	at com.jBidouille.Xroid.Communication.Data.DataWriter.doWriteData(DataWriter.java:109)
    W/System.err(382): 	at com.jBidouille.Xroid.Communication.Data.DataWriter.run(DataWriter.java:73)
    W/System.err(382): 	at java.lang.Thread.run(Thread.java:1096)
    Voici le code utilisé :

    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
    		byte [] bytes;
    		BufferedInputStream buff;
     
    		bytes  = new byte [(int)f.length()];
    		try {
     
                            File f = new File("C:\\temp\\toto.txt");			
    			buff = new BufferedInputStream(new FileInputStream(f));			
     
    			buff.read(bytes,0,bytes.length);
     
    			outputStream.write(bytes,0,bytes.length);
     
    			outputStream.flush();
     
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
     
    	}
    Et voici la preuve que le fichier existe bien :


  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Par défaut, un serveur Apache n'accède qu'à un sous-répertoire.
    Puisque je vois le nom "apache" dans la stack trace, je suppose que ton code tourne sur un serveur Apache ?
    Ton code fonctionne en application stand-alone, mais via Apache, il y a des droits à configurer.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut
    Bonjour,

    Avec ce code ça donne quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import java.io.File;
    public class Print {
    	public static void main(String[] args) {
    		File file = new File("C:\\temp");
    		if (file.isDirectory()){
    			File[] listFiles = file.listFiles();
    			for (int i = 0; i < listFiles.length; i++) {
    				System.out.println(listFiles[i].getName());
    			}
    		} else {
    			System.err.println("Problem sur dossier");
    		}	
    	}
    }

    J'ai l'impression que tu utilises harmony est ce que tu peux tester avec le jdk sun/oracle ?
    Et nous indiquer les versions que tu utilises?

    Bon courage

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Citation Envoyé par LittleBean Voir le message
    J'ai l'impression que tu utilises harmony est ce que tu peux tester avec le jdk sun/oracle ?
    Et nous indiquer les versions que tu utilises?

    Bon courage
    Non, je ne tourne pas sous apache, en tout cas je n'ai rien installer de tel volontairement.

    Voici le compte rendu d'installation de mon JDK : Thank you for installing the Java Development Kit Version 7 Update 4 from Oracle Corporation.

    Je viens à l'instant de tester ton code et il liste bien les fichiers contenus dans \temp.

    Le problème est donc ailleurs, mais où ?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut
    Non, je ne tourne pas sous apache, en tout cas je n'ai rien installer de tel volontairement.
    Hum ça donne quoi un java -version
    ou si tu es sous eclipse dans "Intalled jre"

    Parceque cette ligne est louche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Citation Envoyé par LittleBean Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
    Je fouille aussi sur le web et il semble que cela ai à faire avec Android !

    Je précise que je développe sous eclipse (Version: Indigo Release, Build id: 20110615-0604) et sous environnement Android.

    La version java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java version "1.7.0_04"
    Java(TM) SE Runtime Environment (build 1.7.0_04-b22)
    Java HotSpot(TM) Client VM (build 23.0-b21, mixed mode, sharing)

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Bien l'bonsoir par ici,

    Après que LittleBean m'ai suggéré de voir du côté du message suivant, je confirme que mon problème de FileNotFoundException n'a rien à voir avec java, mais avec Android.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
    Le problème rencontré vient du fait que lorsqu'on développe sous Eclipse en environnement Android, et en émulant un smartphone (cible de l'application) avec AVD Emulator, on ne peut pas exploiter directement les fichiers de l'hote (donc mon PC). En fait c'est l'émulateur Android qui joue le rôle de "PC" à la place du vrai smartphone.

    Il faut donc configurer l'émulateur Android et lui indiquer que son File system n'est pas Windows File system, mais Android File system. C'est une sorte de SD Card virtuelle qui simule le vrai SD Card du smartphone.

    Du coup, Android met a disposition l'API qu'il faut dans Android SDK (getExternalStorageDirectory()) pour mapper la virtual SD Card de l'émulateur et pourvoir l'exploiter naturellement dans Eclipse avec les API classiques de manipulation de fichier.

    Pour plus d'information sur le sujet, voir ici.

    Voici à quoi ressemble le transfert via socket d'un fichier texte présent dans le SD Card de l'émulateur :

    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
    import android.os.Environment;
    import android.util.Log;
     
    private void doSendFile (String fName, OutputStream out){
     
    		byte [] bytes;
    		BufferedInputStream in = null;
    		File path = null;
    		int length = 0;		
     
    		try {
     
    			bytes = new byte[1024];			
     
    			path = Environment.getExternalStorageDirectory(); 
     
    			in = new BufferedInputStream(new FileInputStream(new File(path + "/" + fName)), 8192);			
     
    		    while ((length = in.read(bytes)) > 0)
    		    {
    		    	out.write(bytes, 0, length);
    		    }
     
    		    out.flush();	
     
     
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    		    in.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur avec File.Replace
    Par Invité dans le forum C#
    Réponses: 10
    Dernier message: 28/12/2007, 23h41
  2. $_FILE avec file()
    Par badoux dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2007, 07h31
  3. click avec file
    Par @po©alypse dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/05/2006, 14h22
  4. Réponses: 8
    Dernier message: 09/02/2006, 18h51
  5. Probleme de perf avec File::Find::name;
    Par Ludo167 dans le forum Modules
    Réponses: 6
    Dernier message: 14/07/2004, 11h31

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