AIDE安卓Java项目中File类对象默认查找的目录是什么?
AIDE中File类默认查找目录说明
安卓应用受沙箱机制限制,每个应用只能访问自身私有目录,File类默认的工作目录就是当前应用的私有根目录,对应路径为
/data/data/[你的应用包名]/。在AIDE这类移动端开发环境中,直接使用相对路径时,默认指向应用的内部存储私有目录根,而非assets目录——因为assets是APK打包时的资源容器,不属于设备文件系统的可直接访问路径。你用
InputStream.open(filename)能直接读取,是因为该方法(AIDE中针对assets的输入流)默认通过Android的AssetManager访问APK内的assets目录,它不需要文件系统路径,直接用assets下的相对文件名即可;而File类操作的是设备文件系统,必须指定完整文件系统路径,或相对于应用私有目录的相对路径,二者逻辑完全不同。你尝试的
project name+"\\app\\assets\\"+filename这类路径完全错误:安卓文件系统用**正斜杠/**作为路径分隔符,且assets目录并不在文件系统的这个位置,无法通过File类直接访问。若要检查assets里的文件是否存在,不能用File类,应使用AssetManager的方法:
AssetManager assetManager = getAssets(); try { assetManager.open(filename); // 能正常打开则文件存在 } catch (IOException e) { // 文件不存在 }若要检查应用私有文件目录里的文件,File的默认路径等价于
getFilesDir()返回的目录(/data/data/[包名]/files/),示例:File file = new File("test.txt"); // 等同于 File file = new File(getFilesDir(), "test.txt");
内容的提问来源于stack exchange,提问作者Michael Lowe
相关产品推荐
相关产品推荐

