希望可以在/data/data/PKG NAME/files 路径下创建并读写文件我添加了如下权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<uses-permission android:name="android.permission.READ_OWNER_DATA"></uses-permission>
<uses-permission android:name="android.permission.WRITE_OWNER_DATA"></uses-permission>
我用的是JNI+C++ 代码如下
FILE* file = fopen("/data/data/com.test.w4e/files/Hello.txt","rw");
if (file != NULL)
{
LOGI("ready to write file");
fputs("HELLO WORLD!\n", file);
fflush(file);
fclose(file);
}但是 目前只能实现对已存在文件进行读写  如果文件不存在的话 是不能创建的求指点啊

解决方案 »

  1.   

    另外在问一下在C层  可不可以通过getenv获取到应用所在的路径
      

  2.   

    jni里不行,只能在java层传给jni。
    还有,data\data目录必须要有root权限才能访问。
    如果你想jni里写文件,那可以在java层先打开files目录对应文件,获取他的文件句柄,然后传给jni,jni里直接通过fopend来打开对应的文件句柄。
      

  3.   

    FileInputStream i = new FileInputStream(file);
    FileDescriptor fd = null;
    try {
    fd = i.getFD();//用这个fd传给jni,然后里面去fopend打开这个句柄,就是对应文件file的句柄了。然后就能直接操作了
     
      

  4.   

    android是在linux环境下运行的,所以创建文件应该用linux命令吧
    你试下
    if (!file.exists()) {
         f.mkdirs();
    }
    我不会C语言,用JAVA写的,你可以用C改下
      

  5.   


    写错了,是 f.mkdirs();--> file.mkdirs();
      

  6.   


    ...我弄明白了 我在模拟器上安装包之后 没有自动创建/data/data/pkg name/files 这个路径 所以创建文件不成功 我手动创建了 files这个文件夹之后 就可以创建文件了