大家好,我遇到一个问题:
File file = new File("/mnt/sdcard/mp3/b.mp3");
file.createNewFile();
执行上面这一句时报错如下
java.io.IOException:Permission denied
  at java.io.File.createNewFileImp(Native Method)
  at java.io.File.createNewFile.....
错误应该是执行createNewFile时报的异常,
我在manifest.xml文件中配置了访问权限如下:
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
运行是在模拟器上运行的,为什么会出现这样的问题呢?还需要设置其他的权限么?或者是在模拟器上运行的原因?
大家遇到过类似的问题吗?

解决方案 »

  1.   

    /mnt/sdcard/mp3/b.mp3
    有mnt么?我怎么记得就是sdcard
      

  2.   


    这个项目是基于Android 2.2的。
      

  3.   


    File file = new File("/mnt/sdcard/mp3/b.mp3");
    try {
        file.createNewFile();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    正常执行。
      

  4.   

    你看一下你设置权限的语句写在哪儿了,我以前也出过这个问题。
    <uses-permission android:name="android.permission.INTERNET" />  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    这两句话应该写在</application>的下面,而不是写在<application>和</application>之间。
      

  5.   


    程序肯定没有问题,我感觉就是他权限位置设置错误了~~那两句设置权限的语句应该在</application>下面,而不是在里面。
      

  6.   

    楼上正解:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="sxin.android.exam"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".WriteFileToSDcardAct"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>    </application>
        <uses-permission android:name="android.permission.INTERNET" />   
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        
        <uses-sdk android:minSdkVersion="8" />
    </manifest>这样就可以执行了,不会报错。
      

  7.   

    单纯的把文件写入存储卡不需要以下权限:
    <uses-permission android:name="android.permission.INTERNET" />
      

  8.   

    android 2.2+<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
      

  9.   

    怎么没有高人啊?  我也晕菜了。。遇到了这个问题   <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="zhangxpower.player"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.INTERNET"/>
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".Mp3PlayerListActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    <service android:name=".service.DownloadService"></service>
        </application>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    </manifest>
      

  10.   

    1. 权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    2. 对于长路径需要分几次创建,先创建最外层的dir,然后一级一级的创建,否则会出错。比如要创建下面的文件 需要这样做
    File dir = new File("/mnt/sdcard/mp3");
    dir.mkdir();
    new File(/mnt/sdcard/mp3/b.mp3).createNewFile();
      

  11.   

    在AndroidManifest.xml中加入下面这句话就OK了
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      

  12.   

    遇到同样的问题。
    同一段写文件的代码,在一个程序里可以正常写文件,另一个程序里就报没权限。
    AndroidManifest.xml文件里的权限都加了。
    运行两个程序所使用的模拟器也是同一个。有木有高人啊~~~
      

  13.   

    是不是没有sd卡?呵呵,我也遇到这个问题了,后来发现是没有sd卡
      

  14.   

    调用createNewFile()方法的时,若文件路径不是当前路径,需要先创建除文件名在内的direction;使用mkdir()方法。例如:要创建File file = new File("/mnt/sdcard/mp3/b.mp3");
      1.File file = null;
      2.file = new File("/mnt/sdcard/mp3/");
        file.mkdir();
      3.file = new File("/mnt/sdcard/mp3/b.mp3");
        file.createNewFile();//这个需要异常处理,懒得写了