我正在尝试使用 ndk 将文件写入 /data/data/com.package/files/。
我使用“/proc/PID/cmdline”来获取应用程序的正确路径。路径是正确的。
在 java 中,我调用了 getFilesDir,因此创建了文件路径。
Log.d("MAIN", "Files dir: "+getFilesDir().toString());
我的设备已植根,我可以窥探路径:
# ls -la /data/data/com.package
drwxrwx--x app_149 app_149 2013-04-26 16:33 cache
drwxrwx--x app_149 app_149 2013-04-26 17:06 files
drwxr-xr-x system system 2013-04-26 18:26 lib
文件目录为空。当我尝试使用 fopen 在 files 目录中创建文件时,它会因 EISDIR 而失败:
FILE *fp= NULL;
fp= fopen("/data/data/com.package/files/test.txt","w"); // FAILS with errno 21 (EISDIR)
EISDIR 应该说指向的文件是一个目录,但目录中没有文件!
# ls -la /data/data/com.package/files
#
这会是什么?