10_Android基础:数据存储(一):文件存储

Android基础汇总

 Android应用程序存储数据的5种方式: 

    a、保存到文件(IO流)

    b、SQLite数据库

    c、内容提供者

    d、sharedproferrences保存数据

    e、网络

 

 

文件存储路径一般分2个:应用目录下和SD卡中;

    1.应用目录:data/data/包名 

 

    
    2. SD卡中:data/data/mnt/sdcard或/storage/emulated/0
 
 
        
        
    或者:    
        
 

 

 

 

 

一.  应用目录下文件的写入、修改、读取、删除  

     内存中主要分为2类,普通文件和缓存文件,Android提供了API来获取这两个路径

      (1)文件目录: 

       
       getApplicationContext().getFilesDir();

      //data/data/包名/files ,应用删除时文件夹下内容也被删除

      (2)缓存目录:

      

      getApplicationContext().getCacheDir()

      // data/data/包名/cache ,缓存路径,当内存不足时,会删除

 

 

  1.应用程序的目录下files路径下文件的写入、读取、删除

     (1)写入files路径下

      try {

            //a.生成文件夹路径

               File file = getActivity().getApplicationContext().getFilesDir();

               //data/data/应用报名/files   

                file = new File(file+"aa");

          if (!file.exists()) {

                file.mkdirs();

           }

            //b.生成文件

           file = new File(file, "1.txt");

 

           FileOutputStream stream = new FileOutputStream(file);

           String msg = "这是通过IO流写到手机中的数据";

            //c.写入文件

           stream.write(msg.getBytes());

           stream.flush();

           stream.close();

      } catch (Exception e) {

           e.printStackTrace();

      }

   效果:

    

 

    注意:

    一、添加权限

        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

    二、 如果文件目录存在的话,会写入失败,所以先要判断路径是否存在,如果不存在,创建文件路径,注意不包括文件

       file.makdirs() 如果file为“/aa/b.txt”则会创建一个b.txt的文件夹

 

 

 

    (2)从file路径下读取文件

          TextView tv = (TextView) findViewById(R.id.tv);

          File fileDir = getApplicationContext().getFilesDir();

          fileDir = new File(fileDir+"/function1","1.txt");

      try {

               FileReader fileReader =new  FileReader(fileDir);

               BufferedReader reader = new BufferedReader(fileReader);

               String readLine = reader.readLine();

               tv.setText(readLine);

          } catch (Exception e) {

               e.printStackTrace();

          }

 

   2.应用程序的目录下cache路径下文件的写入、读取、删除.    

            和files路径下文件的写入、读取、删除一样,只是路径不同

        getApplicationContext().getCacheDir()

 

  3.存储到SD卡(重点)

     @Override

      public View onCreateView(LayoutInflater inflater, ViewGroup container,

        Bundle savedInstanceState) {

           View rootView = inflater.inflate(R.layout.fragment_main, container,

         false);

           tv = (TextView) rootView.findViewById(R.id.tv);

               return rootView;

      }

 

  @Override

  public void onActivityCreated(Bundle savedInstanceState) {

   super.onActivityCreated(savedInstanceState);

   String state = Environment.getExternalStorageState();

   if(Environment.MEDIA_MOUNTED.equals(state)){

    try {

     File file = new File(Environment.getExternalStorageDirectory(),"info.txt");

     FileOutputStream inputStream = new FileOutputStream(file);

     inputStream.write("写到SD卡中的内容".getBytes());

     inputStream.flush();

     inputStream.close();

     Toast.makeText(getActivity(), "保存成功", 0).show();

    } catch (Exception e) {

     e.printStackTrace();

    }

   }

   tv.setOnClickListener(new OnClickListener() {

   

    @Override

    public void onClick(View v) {

     File file = new File(Environment.getExternalStorageDirectory(),"info.txt");

     try {

      FileReader reader = new FileReader(file);

      BufferedReader reader2 = new BufferedReader(reader);

      String readLine = reader2.readLine();

      tv.setText(readLine);

     } catch (Exception e) {

      e.printStackTrace();

     }

    }

   });

  }

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值