我正试图加载文件,即使该文件存在,我也会收到FileNotFoundException。我尝试过在绝对路径(C:/Users/cdeck_000/AndroidStudioProjects/ProjectCaligula_Final/cert/cert.crt)和相对路径(cert/cert.crt),假设Android在项目级启动。当我运行它使用相对路径和要求的文件绝对路径我得到这个:.crt文件中的FileNotFoundException
路径:/cert/cert.crt
的代码下面的项目结构一起。
File file = new File("cert/cert.crt");
boolean i = file.exists(); //false
boolean r = file.canRead(); //false
String path = file.getAbsolutePath(); //cert/cert.crt
String pathForApp = new File(".").getAbsolutePath(); //returns "/."
InputStream caInput = new BufferedInputStream(new FileInputStream(file)); //error
任何人都可以附和,让我知道,如果我与Android的绝对/相对路径的知识是错误的或给我如何解决这个建议吗?我已经认为权限是问题,但我提出了文件权限(相当于chmod 777),并没有改变任何东西。
您的IDE通常会从'build'或'build/classes'目录执行您的应用程序。因此,您的证书文件应放在'src'目录中,以便复制到类目录中。 – EJP
@EJP谢谢..我把文件移动到src中,所以现在路径是../src/cert.crt ..我现在改变了从“cert.crt”加载的文件,但它仍然没有找到它。 – Chris
也许我错了,您的文件驻留在您计算机的硬盘上,当您运行应用程序时,您的应用程序无法访问您计算机的硬盘。也许是因为'File file = new File(“cert/cert.crt”);'你将路径作为字符串获取,但在仿真器/设备上运行应用程序时无法访问。尝试通过将其放置在res/raw或assets文件夹中来读取该文件。 – knownUnknown