读书人

怎么写文件到/data/data/packagename/

发布时间: 2012-05-11 12:55:37 作者: rapoo

如何写文件到/data/data/packagename/files中
不好用openfileout...

其他有什么方法么?

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

麻烦帮帮忙!

[解决办法]
FileOutputStream os = ctx.openFileOutput(file.getName(),Context.MODE_WORLD_WRITEABLE);
[解决办法]

Java code
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();                }
[解决办法]
如果packagename,不是你当前调用createnewfile的应用的包名,是没有权限的
[解决办法]
我看了一下,/data/data/packagename/files中files的权限是700,system system ,证明只有system权限才有在里面创建文件的权限,你如果是在想要在里面创建文件的话需要手动修改files文件的权限。
[解决办法]
Java code
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);    }} 

读书人网 >Android

热点推荐