应用运行需要的一些较大的数据或图片可以用文件保存的手机内部
文件类型任意
数据保存的路径/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)
示例
效果图:
当我们点击保存时,会保存我们指定的文件,当我们点击读取时会在下面显示我们存的图片
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 }