代码:
File ne = new File(Environment.getDataDirectory()+"/new.zip");
if(!ne.exists())
{
ne.createNewFile();
}
报错:
09-21 01:10:03.492: WARN/System.err(372): java.io.IOException: Permission denied
09-21 01:10:03.492: WARN/System.err(372):     at java.io.File.createNewFileImpl(Native Method)
09-21 01:10:03.501: WARN/System.err(372):     at java.io.File.createNewFile(File.java:1160)
09-21 01:10:03.501: WARN/System.err(372):     at cn.com.supersunshine.zip.ZipfileActivity$1.onItemClick(ZipfileActivity.java:104)
09-21 01:10:03.511: WARN/System.err(372):     at android.widget.AdapterView.performItemClick(AdapterView.java:284)
09-21 01:10:03.521: WARN/System.err(372):     at android.widget.ListView.performItemClick(ListView.java:3382)
09-21 01:10:03.521: WARN/System.err(372):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
09-21 01:10:03.531: WARN/System.err(372):     at android.os.Handler.handleCallback(Handler.java:587)
09-21 01:10:03.531: WARN/System.err(372):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-21 01:10:03.542: WARN/System.err(372):     at android.os.Looper.loop(Looper.java:123)
09-21 01:10:03.542: WARN/System.err(372):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-21 01:10:03.552: WARN/System.err(372):     at java.lang.reflect.Method.invokeNative(Native Method)
09-21 01:10:03.562: WARN/System.err(372):     at java.lang.reflect.Method.invoke(Method.java:521)
09-21 01:10:03.572: WARN/System.err(372):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-21 01:10:03.572: WARN/System.err(372):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-21 01:10:03.572: WARN/System.err(372):     at dalvik.system.NativeStart.main(Native Method)
09-21 01:10:03.581: ERROR/Exception(372): Permission denied请问我需要配置什么吗??

解决方案 »

  1.   


    AndroidManifest.xml中加权限
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
      

  2.   

    这是不增加权限就能解决的问题Environment.getDataDirectory()
    你想在/data文件夹下一级目录进行操作是不被允许的。能操作文件夹只有两个地方:
    1.sdcard
    2./data/<package_name>/files/详见api  doc:
    docs/guide/topics/data/data-storage.html#filesExternal
      

  3.   

    package_name是我的包名吗???java文件的包名吧?
      

  4.   

    The <package_name> is your Java-style package name, such as "com.example.android.app".
    files就是你所要创建的文件名
      

  5.   

            File file = new File("/data/data/game.cn/wu.laba");
            if(!file.exists())
    try{
    file.createNewFile();
    Log.i("","Create wu.lala success");
    }
            catch (IOException e){
             Log.i("","Create wu.lala fail");
            }我的包名:game.cn
    文件wu.laba
    创建成功,应该是在    /data/data/包名/    下面,楼上的少了一级data
      

  6.   


    为什么我按你那样做了 还是不行呢 
    File file = new File(Environment.getDataDirectory() + "/com.android.weather.util/files/weather.xml");
    if (!file.exists()) {
    file.createNewFile();
    }
    报java.io.IOException: No such file or directory
      

  7.   

    也有可能创建 AVD的时候没有制定SDCARD SIZE
      

  8.   

    这是不增加权限就能解决的问题Environment.getDataDirectory()
    你想在/data文件夹下一级目录进行操作是不被允许的。能操作文件夹只有两个地方:
    1.sdcard
    2./data/<package_name>/files/
      

  9.   

    /mnt/sdcard=sdcard
    /mnt/sdcard/mp3/b.mp3
    那我这个文件可以创建吗?
      

  10.   

    真机外插SD卡的读写权限不仅仅是在manifest里面定义了就行他貌似要求你在挂载sd的路径下先新建文件夹,然后在文件夹中新建文件才好我的问题就是那么解决的还有记得用getExternalStorageDirectory()的时候,它得到的路径没有自动加上'/',因此在新建文件夹的时候,记得给string中加入'/',文件名同理
      

  11.   

    权限问题美名其曰是为了安全,最后的实质变成了google挖坑不让走车,我们填坑去走车,安全不一定上去了,浪费在无聊的地方的时间倒是成倍增加。你的代码倒是free了,用起来一点都不free,麻烦学学微软的接口,不要搞一大堆servers还以为很coooooool,最后,我掏银子买了硬件,你却告诉我权限不够不能用,谁又给你权限去限制别人?