如何写文件到/data/data/packagename/files中

Nico 2012-05-08 11:29:04
不好用openfileout...

其他有什么方法么?

普通的创建文件直接报 open failed: EACCES (Permission denied) 的异常。

麻烦帮帮忙!
...全文
3836 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
jason540 2014-06-25
  • 打赏
  • 举报
回复
楼主! 主要看到一些人莫名其妙的回答问题感觉郁闷!很多次了。 按你说的那样弄的。其实还是在/data/data操作文件的权限问题。 加参数Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE+ Context.MODE_APPEND. 请问这个加在那里? 怎么解决啊? 请教一下啊!!!
twlkyao 2013-12-26
  • 打赏
  • 举报
回复
引用 19 楼 anelka1985 的回复:
[Quote=引用 18 楼 的回复:] 引用 17 楼 的回复: 解决了。 以后不到csdn上问问题了。 自己解决了,就应该说出怎么解决的,不然怎么为以后的人留下好的经验 要分享哈 [/Quote] 主要看到一些人莫名其妙的回答问题感觉郁闷!很多次了。 按你说的那样弄的。其实还是在/data/data操作文件的权限问题。 加参数Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE+ Context.MODE_APPEND.
请问这个加在那里?
zhangd_123 2013-06-04
  • 打赏
  • 举报
回复
也有这样的可能。就是你的sd卡没有mount上。用真机测试很容易会这样。拨线后再试试
zhuyangyang123 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

引用 18 楼 的回复:

引用 17 楼 的回复:

解决了。

以后不到csdn上问问题了。

自己解决了,就应该说出怎么解决的,不然怎么为以后的人留下好的经验
要分享哈

主要看到一些人莫名其妙的回答问题感觉郁闷!很多次了。
按你说的那样弄的。其实还是在/data/data操作文件的权限问题。
加参数Context.MODE_WORLD_WRITEABLE+C……
[/Quote]楼主你好,我想问一下,要是修改 该路径下面的文件里面的值,是不是也要加这个权限啊???我在模拟器上没有加任何权限,但是可以修改。。。可是打包成apk 以后 到了真机上以后 却没有修改。。。看了整个帖子。。。他们好像都说用 fileoutput 不用权限。。。我用的就是 这个 可是 还是没有修改。。。
Nico 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]

引用 17 楼 的回复:

解决了。

以后不到csdn上问问题了。

自己解决了,就应该说出怎么解决的,不然怎么为以后的人留下好的经验
要分享哈
[/Quote]
主要看到一些人莫名其妙的回答问题感觉郁闷!很多次了。
按你说的那样弄的。其实还是在/data/data操作文件的权限问题。
加参数Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE+
Context.MODE_APPEND.
life02 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

解决了。

以后不到csdn上问问题了。
[/Quote]
自己解决了,就应该说出怎么解决的,不然怎么为以后的人留下好的经验
要分享哈
Nico 2012-05-11
  • 打赏
  • 举报
回复
解决了。

以后不到csdn上问问题了。
Nico 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

给分吧
[/Quote]

你好,我问的是在/data/data/packagename/files里边创建文件为何总是报错。不是说如何创建文件。
horsttnann 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

虽然权限加了,但是你要注意一下权限的位置:http://www.apkbus.com/android-15617-1-1.html
[/Quote]

学习了。
life02 2012-05-08
  • 打赏
  • 举报
回复

if (!file.exists()) {
file.createNewFile();
}
FileOutputStream os = ctx.openFileOutput(file.getName(),
Context.MODE_WORLD_WRITEABLE);
byte[] bytes = new byte[512];
int i = -1;
while ((i = is.read(bytes)) > 0) {
os.write(bytes);
}

os.close();
is.close();
String permission = "666";

try {

String command = "chmod " + permission + " " + apkPath
+ "/" + destapkName;
Runtime runtime = Runtime.getRuntime();
runtime.exec(command);
} catch (IOException e) {
e.printStackTrace();
}
life02 2012-05-08
  • 打赏
  • 举报
回复
FileOutputStream os = ctx.openFileOutput(file.getName(),Context.MODE_WORLD_WRITEABLE);
念茜 2012-05-08
  • 打赏
  • 举报
回复
虽然权限加了,但是你要注意一下权限的位置:http://www.apkbus.com/android-15617-1-1.html
Nico 2012-05-08
  • 打赏
  • 举报
回复
回楼上的,权限都有加
msgsnd 2012-05-08
  • 打赏
  • 举报
回复
Permission denied,换种方法也会出现的
laoyiin 2012-05-08
  • 打赏
  • 举报
回复
创建文件的时候,使用绝对路径,例如:
File outfilepath = new File(Environment.getExternalStorageDirectory(),"/myfiles");
new File(outfilepath.getAbsolutePath(), outfileName);
zgycsmb 2012-05-08
  • 打赏
  • 举报
回复
12楼的可以呀,
给点分吧,
lqgyt1 2012-05-08
  • 打赏
  • 举报
回复

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.os.Bundle;

public class FileTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//创建输入输出流对象
FileOutputStream outfile = null;
FileInputStream infile = null;
try {
//创建openFile的两个对象 openFileOutput()的两个参数
//第一个是文件名,第二个是属性,0代表只允许应用程序操作这个文件
outfile = this.openFileOutput("test.txt", 0);
infile = this.openFileInput("test.txt");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
DataOutputStream dout = null ;
try {
//写文件
dout = new DataOutputStream(outfile );
dout.writeUTF("testtesttesttesttesttest");
dout.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DataInputStream din = null;
//读文件
din = new DataInputStream(infile);
String result = null;
try {
result = din.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(result);
}
}



用openFileOutput不需要加权限啊...
life02 2012-05-08
  • 打赏
  • 举报
回复
String apkPath = "/data/data/" + getPackageName() + "/files";
怀疑你的路径错误,不是权限的问题
请参考
http://ccsosnfs.iteye.com/blog/1390405
Rayleigh 2012-05-08
  • 打赏
  • 举报
回复
我看了一下,/data/data/packagename/files中files的权限是700,system system ,证明只有system权限才有在里面创建文件的权限,你如果是在想要在里面创建文件的话需要手动修改files文件的权限。
Nico 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

如果packagename,不是你当前调用createnewfile的应用的包名,是没有权限的
[/Quote]

关键它就是我的自己程序的包名。哥们,给个说法啊。谢谢啦
加载更多回复(2)

80,361

社区成员

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

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