assets转到内外部存储

Posted storm47

tags:

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

layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.hanqi.cunchu.lianxi">
<ImageView
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:id="@+id/iv"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="assets文件图片"/>
    <ImageView
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:id="@+id/iv2"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="assets转到内部存储并显示"
        android:onClick="bt"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="内部存储转到外部"
        android:onClick="bt2"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="显示外部存储"
        android:onClick="bt3"/>
</LinearLayout>

java代码

package com.hanqi.cunchu;

import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.FileOutputStream;
import java.io.InputStream;

public class lianxi extends AppCompatActivity {
    ImageView iv, iv2;
    int i=0;
    byte []b=new byte[1024];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lianxi);
        iv=(ImageView)findViewById(R.id.iv);
        iv2=(ImageView)findViewById(R.id.iv2);
    }
    public void bt(View v){
        try {
            AssetManager assetManager = getAssets();
            InputStream inputStream = assetManager.open("aa.jpg");

            String path=getExternalFilesDir("Music").toString();
            Toast.makeText(lianxi.this, path, Toast.LENGTH_LONG).show();

            FileOutputStream fos1=openFileOutput("b.jpg", MODE_PRIVATE);
            FileOutputStream fos=new FileOutputStream(path+"a.jpg");

            while ((i=inputStream.read(b))>0){
                fos1.write(b,0,i);
                fos.write(b,0,i);
            }
            fos1.close();
            fos.close();
            inputStream.close();

            String path1=getFilesDir().getCanonicalPath()+"/b.jpg";

            Bitmap b= BitmapFactory.decodeFile(path1);
            iv.setImageBitmap(b);

        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void bt2(View view){
        return;
//        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//            try{
//                String path=getExternalFilesDir("Music").toString();
//                Toast.makeText(lianxi.this, path, Toast.LENGTH_LONG).show();
//
//                FileOutputStream fos=new FileOutputStream(path+"a.jpg");
//                PrintStream ps=new PrintStream(fos);
//                String s=new String(b,0,i);
//                ps.print(s);
//                ps.close();
//                fos.close();
//                Toast.makeText(lianxi.this, "写入完成", Toast.LENGTH_SHORT).show();
//
//            }catch (Exception e){
//                e.printStackTrace();
//            }
//        }
//        else{
//            Toast.makeText(lianxi.this, "没有SD卡", Toast.LENGTH_SHORT).show();
//        }
    }
    public  void bt3(View v){
        try{
        String path=getExternalFilesDir("Music").getCanonicalPath()+"a.jpg";
        Bitmap b=BitmapFactory.decodeFile(path);
            iv2.setImageBitmap(b);
        }
        catch (Exception e){
            e.printStackTrace();
        }

    }
}

 

以上是关于assets转到内外部存储的主要内容,如果未能解决你的问题,请参考以下文章

将位图从片段保存到内部/外部存储[关闭]

从外部存储中检索 Relay 查询片段的变量

Unity报错:Read only asset Packages/com.xxxxx.xxx.xxxx/Editor/VSCodeDiscovery.cs.IPGSD has no meta(代码片段

Unity报错:Read only asset Packages/com.xxxxx.xxx.xxxx/Editor/VSCodeDiscovery.cs.IPGSD has no meta(代码片段

如何在kotlin中从一个片段转到另一个片段?

Android MVVM在哪里存储数据?