2016-05-21 5 views
1

J'essaye de lire un fichier txt suivant ce answer mais je n'arrive pas à le faire fonctionner. Il montre cette exception:J2ME Exception ouverture d'un fichier: Root n'est pas accessible

java.io.IOException: Root is not accessible 
- com/sun/io/j2me/file/Protocol..unknown.(), bci=21 
- com/sun/io/j2me/file/Protocol..unknown.(), bci=424 
- com/sun/io/j2me/file/Protocol..unknown.(), bci=5 
- javax/microedition/io/Connector.open(), bci=73 
- javax/microedition/io/Connector.open(), bci=6 
- javax/microedition/io/Connector.open(), bci=3 

Voici le code:

try 
{      
    fileConnection = (FileConnection)Connector.open("file://home//pi//test.txt", Connector.READ_WRITE); 

    if(fileConnection.exists()) 
    { 
     int size = (int)fileConnection.fileSize(); 
     is= fileConnection.openInputStream(); 
     byte bytes[] = new byte[size]; 
     is.read(bytes, 0, size); 
     String str = new String(bytes, 0, size); 

     System.out.println(size); 
    } 

} 

Je pense qu'il a à voir avec les autorisations, mais je l'ai mis ces:

javax.microedition.io.Connector.file.read 

javax.microedition.io.Connector.file.write 

java.io.FilePermission "file://*" "read,write" 

Quelqu'un peut-il Aidez moi?

Merci à l'avance,

+0

J'ai trouvé la solution par moi-même, le chemin ne commence pas par 'home', mais par 'root1' – cuoka

Répondre

0

Certains/la plupart des téléphones JavaME compatibles ne permettent pas d'accéder à tous les dossiers sur la carte SD ou le stockage interne. Essayez à la place d'utiliser String file = "file:///c:/other/test.txt"; ou String file = "file:///e:/other/test.txt"; à la place.

Ou vous pouvez essayer String file = System.getProperty("fileconn.dir.memorycard") + "/test.txt"; ou String file = System.getProperty("fileconn.dir.memorycard") + "/other/test.txt";

La meilleure approche est cependant d'utiliser le code qui vérifie simplement pour les dossiers disponibles. Quelques exemples utiles ici: http://javatechig.com/java/j2me/fileconnection-apis-jsr-75