Android学习总结——文件储存

Android中文件存储的操作:

1.Activity的openFileOutput()方法可以把数据输出到文件中
2.创建的文件保存在/data/data/<package name>/files目录
3.实现过程与在java中保存数据到文件中是一样的

<!-- 在SD卡中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 向SD卡写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

public class MainActivity extends Activity{
    protected void onCreat(Bundle savedInstanceState){
        super.onCreat(savedInstanceState);
        setContentView(R.layout.activity_main);
        File file=new File("/mnt/sdcard/test"); //创建文件
        if(!file.exists()){ //判断文件是否存在
            try{
                file.createNewFile(); //文件不存在就创建它
            }catch(IOException e){
                e.printStackTrace();
            }
        }else{
            Toast.makeText(MainActivity.this,"文件已存在",1000).show();
        }
       //file.delete(); //删除文件
    }
}

 

1.目录结构。this.getFilesDir().当前程序默认的数据存储目录
2.this.getCacheDir(),默认的缓存文件的存放位置,不太重要的创建使用,内存不足的时候,系统会自动删除app中cache目录的数据
3.this.getDir("xch",MODE_PRIVATE);/data/data/<包名>/app_xch
4.this.getExternalCacheDir(),外部的存储位置,app卸载后会自动删除。
5.如果开发者不遵守不把数据放入data/data/<包名>或者/mnt/sdcard/Android/data/<包名>,卸载不会清除,会造成所谓的数据垃圾。

 

 

 

Demo:

package com.example.filereadwrite;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText content;
    private Button btn_SaveRead;
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        content=(EditText) findViewById(R.id.et);
        btn_SaveRead=(Button) findViewById(R.id.btn_SaveRead);
        tv=(TextView) findViewById(R.id.tv);

        btn_SaveRead.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_SaveRead:
                writeFile(content.getText().toString());
                tv.setText(readFile());
                break;
        }
    }

    /**
     * 将内容写入文件
     * @param content
     */
    public void writeFile(String content){
        try {
            FileOutputStream fos=openFileOutput("text.txt",MODE_PRIVATE);
            fos.write(content.getBytes());
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 将文件内容读出
     */
    public String readFile(){
        String content="";
        try {
            FileInputStream fis=openFileInput("text.txt");
            ByteArrayOutputStream baos=new ByteArrayOutputStream();//可以捕获内存缓冲区的数据,转换成字节数组
            int len=0;
            byte[] buffer=new byte[1024];
            while((len=fis.read(buffer))!=-1){
                baos.write(buffer,0,len);
            }
            content=baos.toString();
            fis.close();
            baos.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return content;
    }
}

注: FileOUtputStream fos= openOutoput(文件名,访问权限);
     fos.write(写入的二进制文件);

     byte [] buffer = new byte[1024];// 最多可存1024字节

     baos.write(buffer, 0, len);// 0表示偏移量为0

 

posted @ 2016-09-21 20:31  程序员大佬超  阅读(575)  评论(0编辑  收藏  举报