数据存储——手机内部文件存储
Posted 安然罒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据存储——手机内部文件存储相关的知识,希望对你有一定的参考价值。
一.特点
1.存储的是任意类型的文件
2.使用IO输入输出流操作文件
3.存放的目录:/data/data/包名/files/
4.可以设置不被其他应用操作
5.应用卸载之后,数据同时被删除
二.API
1.FileOutputStream 文件输出流
1-openFileOutput(文件名,操作模式)
mode 操作模式
1>MODE_PRIVATE,不能被别的应用访问,覆盖模式
2>MODE_APPEND,不能被别的应用访问,追加模式
2-close( )关闭输出流
2.PrintStream 打印流
1-new PrintStream(输出流)
2-print(String) 打印字符串
3-printIn(String) 打印字符串并自动换行
4-close( ) 关闭打印流
3.FileInputStream 文件输入流
1-openFileInput(文件名)
2-close( )关闭输入流
3-read(byte[ ]),把读到的字节保存到byte[ ]里,并返回读到的数据长度。
4.File 文件或目录
1-getFilesDir( ) 返回代表内部存储目录的File实例
2-getAbsolutePath( ) 返回绝对路径
代码展示:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:paddingBottom="@dimen/activity_vertical_margin" 7 android:paddingLeft="@dimen/activity_horizontal_margin" 8 android:paddingRight="@dimen/activity_horizontal_margin" 9 android:paddingTop="@dimen/activity_vertical_margin" 10 tools:context="com.hanqi.testapp3.MainActivity" 11 android:orientation="vertical"> 12 13 <TextView 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:text="Hello World!" 17 android:id="@+id/tv_1"/> 18 19 20 <EditText 21 android:layout_width="match_parent" 22 android:layout_height="wrap_content" 23 android:hint="输入..." 24 android:id="@+id/et_1"/> 25 26 <Button 27 android:layout_width="match_parent" 28 android:layout_height="wrap_content" 29 android:text="写内容文件" 30 android:onClick="bt2_OnClick"/> 31 32 <Button 33 android:layout_width="match_parent" 34 android:layout_height="wrap_content" 35 android:text="读内容文件" 36 android:onClick="bt3_OnClick"/> 37 </LinearLayout>
1 package com.hanqi.testapp3; 2 3 import android.content.SharedPreferences; 4 import android.support.v7.app.AppCompatActivity; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.widget.EditText; 8 import android.widget.TextView; 9 import android.widget.Toast; 10 11 import java.io.File; 12 import java.io.FileInputStream; 13 import java.io.FileOutputStream; 14 import java.io.PrintStream; 15 16 17 public class MainActivity extends AppCompatActivity { 18 19 TextView tv_1; 20 EditText et_1; 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_main); 26 27 et_1=(EditText)findViewById(R.id.et_1); 28 tv_1=(TextView)findViewById(R.id.tv_1); 29 30 } 31 32 33 //写内容文件 34 public void bt2_OnClick(View v) 35 { 36 //从内存里写入文件 37 38 //1.得到内部的存储目录 39 try { 40 41 File file =getFilesDir(); 42 43 String path=file.getAbsolutePath(); 44 45 Toast.makeText(MainActivity.this, "path"+path, Toast.LENGTH_SHORT).show(); 46 47 //2.用输出流写入文件 48 FileOutputStream fos=openFileOutput("test.txt",MODE_APPEND); 49 50 //写入文件内容 51 PrintStream ps=new PrintStream(fos); 52 53 String str=et_1.getText().toString(); 54 55 ps.println(str); 56 //ps.println("自动换行"); 57 58 ps.close(); 59 60 fos.close(); 61 Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show(); 62 63 } 64 catch (Exception e) 65 { 66 67 Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_SHORT).show(); 68 } 69 70 } 71 72 //读 73 public void bt3_OnClick(View v) 74 { 75 //输入流 76 try { 77 78 FileInputStream fis=openFileInput("test.txt"); 79 80 //1 定义byte[] 81 byte [] b=new byte[1024]; 82 int i=0;//读到的数据长度 83 84 String str1=""; 85 86 //2循环读 87 while ((i=fis.read(b))>0) 88 { 89 String str=new String(b,0,i); 90 91 str1+=str; 92 } 93 94 fis.close(); 95 96 tv_1.setText(str1); 97 } 98 catch (Exception e) 99 { 100 101 } 102 103 104 } 105 }
以上是关于数据存储——手机内部文件存储的主要内容,如果未能解决你的问题,请参考以下文章