J2ME异常打开文件:Root无法访问

时间:2016-05-21 16:50:37

标签: permissions java-me file-connection

我试图在answer之后阅读txt文件,但我无法让它工作。它显示了这个例外:

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

这是代码:

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);
    }

}

我认为它与权限有关,但我已经设置了这些:

javax.microedition.io.Connector.file.read

javax.microedition.io.Connector.file.write

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

任何人都可以帮助我吗?

提前致谢,

1 个答案:

答案 0 :(得分:0)

部分/大多数支持JavaME的手机不允许访问SD卡或内部存储设备上的所有文件夹。

请尝试使用String file = "file:///c:/other/test.txt";String file = "file:///e:/other/test.txt";

或者您可以尝试String file = System.getProperty("fileconn.dir.memorycard") + "/test.txt";String file = System.getProperty("fileconn.dir.memorycard") + "/other/test.txt";

然而,最好的方法是使用只检查可用文件夹的代码。一些有用的例子: http://javatechig.com/java/j2me/fileconnection-apis-jsr-75