android 中创建文件 Permission denied

好大一地嗯 2010-09-21 09:21:13
代码:
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


请问我需要配置什么吗??
...全文
14132 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
loomz 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

也有可能创建 AVD的时候没有制定SDCARD SIZE
[/Quote]

应该使劲加分
zsc58910 2011-12-02
  • 打赏
  • 举报
回复 3
权限问题美名其曰是为了安全,最后的实质变成了google挖坑不让走车,我们填坑去走车,安全不一定上去了,浪费在无聊的地方的时间倒是成倍增加。你的代码倒是free了,用起来一点都不free,麻烦学学微软的接口,不要搞一大堆servers还以为很coooooool,最后,我掏银子买了硬件,你却告诉我权限不够不能用,谁又给你权限去限制别人?
summer小橙子 2011-11-28
  • 打赏
  • 举报
回复
真机外插SD卡的读写权限不仅仅是在manifest里面定义了就行

他貌似要求你在挂载sd的路径下先新建文件夹,然后在文件夹中新建文件才好

我的问题就是那么解决的

还有记得用getExternalStorageDirectory()的时候,它得到的路径没有自动加上'/',因此在新建文件夹的时候,记得给string中加入'/',文件名同理
资深全栈码农 2011-11-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 a394318511 的回复:]
/mnt/sdcard=sdcard
/mnt/sdcard/mp3/b.mp3
那我这个文件可以创建吗?
[/Quote]
请问哥们,最后这个问题是怎么解决的啊
a394318511 2011-08-07
  • 打赏
  • 举报
回复
/mnt/sdcard=sdcard
/mnt/sdcard/mp3/b.mp3
那我这个文件可以创建吗?
xiaozhi819 2011-04-19
  • 打赏
  • 举报
回复 1
这是不增加权限就能解决的问题

Environment.getDataDirectory()
你想在/data文件夹下一级目录进行操作是不被允许的。

能操作文件夹只有两个地方:
1.sdcard
2./data/<package_name>/files/
javaDeveloper2010 2011-04-01
  • 打赏
  • 举报
回复
lz怎么解决的啊,我也遇到次问题了,求解啊,楼主,上面的方法都不行,还请大虾们帮忙啊,崩溃了。
pw79461 2011-03-03
  • 打赏
  • 举报
回复
也有可能创建 AVD的时候没有制定SDCARD SIZE
远方夕阳 2010-10-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sodino 的回复:]

The <package_name> is your Java-style package name, such as "com.example.android.app".


files就是你所要创建的文件名
[/Quote]

为什么我按你那样做了 还是不行呢
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
wu55uw 2010-10-13
  • 打赏
  • 举报
回复
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
Sodino 2010-09-21
  • 打赏
  • 举报
回复
The <package_name> is your Java-style package name, such as "com.example.android.app".


files就是你所要创建的文件名
好大一地嗯 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sodino 的回复:]
这是不增加权限就能解决的问题

Environment.getDataDirectory()
你想在/data文件夹下一级目录进行操作是不被允许的。

能操作文件夹只有两个地方:
1.sdcard
2./data/<package_name>/files/

详见api doc:
docs/guide/topics/data/data-storage.html#filesExt……
[/Quote]


package_name是我的包名吗???java文件的包名吧?
好大一地嗯 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 seu_why 的回复:]
AndroidManifest.xml中加权限

XML code
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILES……
[/Quote]

好像并不管用,是不是手机上的文件夹无法创建?
Sodino 2010-09-21
  • 打赏
  • 举报
回复
这是不增加权限就能解决的问题

Environment.getDataDirectory()
你想在/data文件夹下一级目录进行操作是不被允许的。

能操作文件夹只有两个地方:
1.sdcard
2./data/<package_name>/files/

详见api doc:
docs/guide/topics/data/data-storage.html#filesExternal
dinjay 2010-09-21
  • 打赏
  • 举报
回复
LS正解,添加权限即可
Seu_why 2010-09-21
  • 打赏
  • 举报
回复

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


80,488

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧