一.创建
1./src/main/assets
2.切换到Project视图模式,在main下新建文件夹assets
二.特点
1.和res同等级别
2.主要是存放项目中的大文件
3.文件不受R类的管理
三.API
1.AssetManager 资产管理器
1-getAssets() 得到资产管理器
2-open(文件名) 返回文件的InputStream
2.ImageView:setImageBitmap(Bitmap 实例) 设置图片视图的位图
3.Bitmap 位图:BitmapFactory.decodeFile(图片文件路径) 使用工厂方法得到图片文件的Bitmap.
图片内部存储代码展示:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 14 15 <Button 16 android:layout_width="match_parent" 17 android:layout_height="wrap_content" 18 android:text="保存资产文件到内部存储" 19 android:onClick="bt4_OnClick"/> 20 21 <ImageView 22 android:layout_width="wrap_content" 23 android:layout_height="30dp" 24 android:id="@+id/iv_1" 25 android:src="@drawable/f9"/> 26 27 <Button 28 android:layout_width="match_parent" 29 android:layout_height="wrap_content" 30 android:text="设置图片指向内部存储" 31 android:onClick="bt5_OnClick"/> 32 33 34 35 36 37 </LinearLayout>
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 package com.hanqi.testapp3; 2 3 import android.content.SharedPreferences; 4 import android.content.res.AssetManager; 5 import android.graphics.Bitmap; 6 import android.graphics.BitmapFactory; 7 import android.os.Environment; 8 import android.support.v7.app.AppCompatActivity; 9 import android.os.Bundle; 10 import android.text.BidiFormatter; 11 import android.view.View; 12 import android.widget.EditText; 13 import android.widget.ImageView; 14 import android.widget.TextView; 15 import android.widget.Toast; 16 17 import java.io.File; 18 import java.io.FileInputStream; 19 import java.io.FileOutputStream; 20 import java.io.InputStream; 21 import java.io.PrintStream; 22 23 24 public class MainActivity extends AppCompatActivity { 25 26 27 ImageView iv_1; 28 29 @Override 30 protected void onCreate(Bundle savedInstanceState) { 31 super.onCreate(savedInstanceState); 32 setContentView(R.layout.activity_main); 33 34 35 iv_1=(ImageView)findViewById(R.id.iv_1); 36 37 } 38 39 40 41 //保存资产文件到内部存储 42 public void bt4_OnClick(View v) 43 { 44 try { 45 46 //操作assets目录文件 47 48 //1.得到assetsManager 49 50 AssetManager am=getAssets(); 51 52 //2.操作资产目录,边读边写入 53 //1)读文件到内存 inputstream 54 InputStream is=am.open("car.png"); 55 56 57 //2)写文件到目录 outputstream 58 FileOutputStream fos=openFileOutput("test.png",MODE_PRIVATE); 59 60 //先读后写 61 byte [] b=new byte[1024]; 62 int i=0; 63 64 while ((i=is.read(b))>0) 65 { 66 fos.write(b,0,i); 67 } 68 69 fos.close(); 70 is.close(); 71 72 Toast.makeText(MainActivity.this, "保存文件成功", Toast.LENGTH_SHORT).show(); 73 74 75 76 } 77 catch (Exception e) 78 { 79 Toast.makeText(MainActivity.this, "保存文件出错", Toast.LENGTH_SHORT).show(); 80 } 81 } 82 83 //设置图片指向内部存储 84 public void bt5_OnClick(View v) 85 { 86 87 //1.得到文件路径 88 String path=getFilesDir().getAbsolutePath()+"/test.png"; 89 90 Toast.makeText(MainActivity.this, "path="+path, Toast.LENGTH_LONG).show(); 91 92 //2.从内部存储的图片得到 Bitmap,BitmapFactory.decodeFile("文件路径"); 93 Bitmap bm= BitmapFactory.decodeFile(path); 94 95 //3.设置图片视图的图片来源 96 iv_1.setImageBitmap(bm); 97 } 98 99 100 }