Android之内部存储

应用运行需要的一些较大的数据或图片可以用文件保存的手机内部

文件类型任意

数据保存的路径/data/data/projectPackage/files/

可以设置数据只能是当前应用读取,而别的应用不可以

应用卸载时会删除数据

相关API

读取文件:

  FileInputStream fis=openFileInput("logo.png");

保存文件:

  FileOutputStream fos=openFileOutput("logo.png",MODE_PRIVATE);

得到files文件夹对象

  File filesDir=getFilesDir();

操作asserts下的文件

  得到AssetManager:context.getAssets():

  读取文件:InputStream open(filename);

加载图片文件

  Bitmap BitmapFactory.decodeFile(String pathName)

示例

效果图:

Android之内部存储

 

当我们点击保存时,会保存我们指定的文件,当我们点击读取时会在下面显示我们存的图片

xml文件:

 1 <LinearLayout
 2         android:id="@+id/li_btn"
 3         android:layout_width="match_parent"
 4         android:layout_height="wrap_content"
 5         android:layout_margin="8dp"
 6         android:orientation="horizontal">
 7 
 8         <Button
 9             android:layout_width="wrap_content"
10             android:layout_height="wrap_content"
11             android:layout_weight="1"
12             android:gravity="center_horizontal"
13             android:onClick="save"
14             android:text="保存"
15             android:textSize="25sp" />
16 
17         <Button
18             android:layout_width="wrap_content"
19             android:layout_height="wrap_content"
20             android:layout_weight="1"
21             android:gravity="center_horizontal"
22             android:onClick="read"
23             android:text="读取"
24             android:textSize="25sp" />
25     </LinearLayout>
26     <ImageView
27         android:id="@+id/img"
28         android:layout_below="@id/li_btn"
29         android:layout_width="wrap_content"
30         android:layout_height="wrap_content"
31         android:src="@drawable/z"/>

Java代码:

 1 package com.example.a13320.teststage;
 2 
 3 import android.content.Context;
 4 import android.content.res.AssetManager;
 5 import android.graphics.Bitmap;
 6 import android.graphics.BitmapFactory;
 7 import android.support.v7.app.AppCompatActivity;
 8 import android.os.Bundle;
 9 import android.view.View;
10 import android.widget.ImageView;
11 import android.widget.Toast;
12 
13 import java.io.FileInputStream;
14 import java.io.FileNotFoundException;
15 import java.io.FileOutputStream;
16 import java.io.IOException;
17 import java.io.InputStream;
18 
19 public class In_Activity extends AppCompatActivity {
20     private ImageView img;
21 
22     @Override
23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.activity_in_);
26         img = (ImageView) findViewById(R.id.img);
27     }
28 
29     public void save(View v) {
30         try {
31             //获得AssetManager对象
32             AssetManager assetManager = getAssets();
33             //读取文件(读取管道连到文件上)
34             InputStream in = assetManager.open("z.png");
35             //得到FileOutputStream(输出管道连接到文件上)
36             FileOutputStream out = openFileOutput("z.png", Context.MODE_PRIVATE);
37             byte buffer[] = new byte[1024];
38             int len = -1;
39             while ((len = in.read(buffer)) != -1) {
40                 out.write(buffer, 0, len);
41             }
42             in.close();
43             out.close();
44             Toast.makeText(In_Activity.this, "保存成功", Toast.LENGTH_SHORT).show();
45         } catch (IOException e) {
46             e.printStackTrace();
47         }
48 
49 
50     }
51 
52     public void read(View v) {
53         //获得图片路径
54         String filepath = getFilesDir().getPath();
55         String imgaePth = filepath + "/z.png";
56         //加载路径得到bitmap对象
57         Bitmap bmp = BitmapFactory.decodeFile(imgaePth);
58         //设置在imageView中
59         img.setImageBitmap(bmp);
60     }
61 }

 

Android之内部存储

上一篇:NameError: name 'QApplication' is not defined 的解决办法


下一篇:【微信小程序】使用setTimeout制作定时器的思路