数据存储——手机内部文件存储

一.特点

(1)存储的是任意类型的文件

(2)使用IO输入输出流操作文件

(3)存放的目录:/date/date/包名/files/

(4)可以设置不被其他应用操作

(5)应用卸载之后,数据同时被删除

二.API

(1)FileOutputStream  文件输出流

①openFileOutput(文件名,操作模式)

mode  操作模式:MODE_PRIVATE不能被别的应用访问,覆盖模式

                        MODE_APPEND不能被别的应用访问,追加模式

②close()  关闭输出流

(2)PrintStream  打印流

①new PrintStream(输出流)

②print(String)  打印字符串

③println(String)打印字符串并自动换行

④close()  关闭打印流

(3)FileInputStream  文件输入流

①openFileInput(文件名)

②close()  关闭输入流

③read(byte[ ]):把读到的字节保存到byte[ ]里,并返回读到的数据长度

(4)File  文件或目录

①getFileDir()返回代表内部存储目录的File实例

②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 <EditText
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:hint="输入..."
16         android:id="@+id/et_1"/>
17 
18     <Button
19         android:layout_width="match_parent"
20         android:layout_height="wrap_content"
21         android:text="写内部文件"
22         android:onClick="bt2_OnClick"/>
23 
24     <Button
25         android:layout_width="match_parent"
26         android:layout_height="wrap_content"
27         android:text="读内部文件"
28         android:onClick="bt3_OnClick"/>
29 
30 </LinearLayout>

 

 

 1 package com.hanqi.testapp3;
 2 
 3 import android.content.SharedPreferences;
 4 import android.os.Bundle;
 5 import android.support.v7.app.AppCompatActivity;
 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 public class MainActivity extends AppCompatActivity {
17 
18     EditText et_1;
19     TextView tv_1;
20 
21     @Override
22     protected void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.activity_main);
25 
26         et_1=(EditText)findViewById(R.id.et_1);
27         tv_1=(TextView)findViewById(R.id.tv_1);
28     }
29 //写内部文件
30     public void bt2_OnClick(View v)
31     {
32         //从内存里写入文件
33 
34         //1.得到内部的存储目录
35         try {
36 
37 
38         File file=getFilesDir();
39 
40         String path=file.getAbsolutePath();
41 
42         Toast.makeText(MainActivity.this, "path"+path, Toast.LENGTH_SHORT).show();
43 
44         //2.用输出流写入文件
45 
46         FileOutputStream fos = openFileOutput("test.txt",MODE_APPEND);
47 
48         //3.写入文件内容
49             PrintStream ps=new PrintStream(fos);
50 
51             String str=et_1.getText().toString();
52 
53             ps.println(str);
54             //ps.println("自动换行");
55             ps.close();
56             fos.close();
57             Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
58         }
59         catch (Exception e)
60         {
61             Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_SHORT).show();
62         }
63 
64 
65     }
66 
67     //
68     public void bt3_OnClick(View v)
69     {
70         try {
71             //输入流
72             FileInputStream fis = openFileInput("test.txt");
73 
74             //1.定义byte[]
75             byte[]b=new byte[1024];
76             int i=0;//读到的数据长度
77 
78             String str1="";
79 
80             //2.循环读
81             while((i=fis.read(b))>0)
82             {
83                 String str=new String(b,0,i);
84 
85                 str1+=str;
86             }
87 
88             fis.close();
89 
90             tv_1.setText(str1);
91 
92         }
93         catch (Exception e)
94         {
95 
96         }
97     }
98 }

 

  

  

posted @ 2016-05-26 16:29  烟_雨_江_南  阅读(383)  评论(0编辑  收藏  举报