android开发第二天文件存储

文件存储:

复制代码
public class MainActivity extends Activity {
    EditText mname, mage;
    TextView mtv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mname = (EditText) findViewById(R.id.editText1);
        mage = (EditText) findViewById(R.id.editText2);
        mtv = (TextView) findViewById(R.id.textView1);
    }

    public void onClick(View v) {
        String name = mname.getText().toString();
        int age = Integer.parseInt(mage.getText().toString());
        String cont = "name=" + name + ",age=" + age + "\n";
        try {
            int id = v.getId();
            // 内部保存
            if (id == R.id.button1) {
                FileOutputStream fos = this.openFileOutput("mytext.txt",
                        Context.MODE_APPEND | Context.MODE_WORLD_WRITEABLE
                                | Context.MODE_WORLD_READABLE);
                fos.write(cont.getBytes());
                fos.close();
                Toast.makeText(this, "写入完成", 1).show();
            }
            // 读取
            else if (id == R.id.button2) {
                FileInputStream fis = this.openFileInput("mytext.txt");
                byte[] bytes = new byte[fis.available()];
                fis.read(bytes);
                fis.close();
                String str = new String(bytes);
                mtv.setText(str);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
复制代码

其他app如果想要访问这个mytext.txt文件格式如下:

复制代码
public class MainActivity extends Activity {
    TextView mcontent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mcontent=(TextView) findViewById(R.id.textView1);
    }
    public void onClick(View v){
        switch (v.getId()) {
        case R.id.button1:
            try {
                readRemoteFileByAbslutePath();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            break;
        case R.id.button2:
            try {
                WriteRemoteFileByAbslutePath();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            break;
        default:
            break;
        }
    }
    /**
     * 通过文件绝对路径读取远程文件
     * @throws Exception
     */
    public void readRemoteFileByAbslutePath() throws Exception{
        String path = "/data/data/com.nanguabing.filedemo/files/mytext.txt" ;
        FileInputStream fis = new FileInputStream(path);
        byte[] bytes = new byte[fis.available()];
        fis.read(bytes);
        fis.close();
        String str = new String(bytes);
        mcontent.setText(str);
        Log.i("Other", str);
    }
    
    /**
     * 通过文件绝对路径读取远程文件
     * @throws Exception
     */
    public void WriteRemoteFileByAbslutePath() throws Exception{
        String path = "/data/data/com.nanguabing.filedemo/files/mytext.txt" ;
        FileOutputStream fos = new FileOutputStream(path,true);
        fos.write("other write! ".getBytes());
        fos.close();
        Log.i("Other", "other write over!");
    }
    /**
     * 通过包相关上下文写入远程文件
     * @throws Exception
     */
    public void readRomoteByPackageContext() throws Exception {
        String pname = "com.nanguabing.filedemo";
        Context ctx = this.createPackageContext(pname,
                Context.CONTEXT_IGNORE_SECURITY);
        FileInputStream fis = ctx.openFileInput("mytext.txt");
        byte[] bytes = new byte[fis.available()];
        fis.read(bytes);
        fis.close();
        Log.i("Other",new String(bytes));
    }
    
    /**
     * 通过包相关上下文写入远程文件
     */
    public void readRomoteByPackageContext2() throws Exception {
        String pname = "com.nanguabing.filedemo";
        Context ctx = this.createPackageContext(pname,
                Context.CONTEXT_INCLUDE_CODE);
        FileInputStream fis = ctx.openFileInput("mytext.txt");
        byte[] bytes = new byte[fis.available()];
        fis.read(bytes);
        fis.close();
        Log.i("Other",new String(bytes));
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}
复制代码

 

移动开发qq群:59516399
csdn下载地址:http://download.csdn.net/detail/wenwei19861106/4975929

posted on   南瓜饼  阅读(1087)  评论(5编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2013年1月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
点击右上角即可分享
微信分享提示