手机内部文件存储——assets目录

Posted 安然罒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手机内部文件存储——assets目录相关的知识,希望对你有一定的参考价值。

一.创建 

   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.

 

图片内部存储代码展示:

 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>
图片手机内部存储
  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 }
图片手机内部存储.java

 

以上是关于手机内部文件存储——assets目录的主要内容,如果未能解决你的问题,请参考以下文章

android 修改apk的asset目录后怎么安装

设置assets目录下图片到内部存储

Android 拷贝SQLite数据库文件到手机的内部存储

手机如何读取assets隐藏目录

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

安卓手机如何打开.assets文件