Android学习总结——文件储存

临文乍了了,彻卷兀若无。这篇文章主要讲述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/< 包名> ,卸载不会清除,会造成所谓的数据垃圾。
【Android学习总结——文件储存】 
Android学习总结——文件储存

文章图片

 
 
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
 

    推荐阅读