数据存储——四种存储方式——存储卡的文件操作——在存储卡上读写图片文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

======================================================================

 

 

 

 

 

 

 

第一个布局:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="5dp" >

    <ImageView
        android:id="@+id/iv_content"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:scaleType="fitCenter" />

    <Button
        android:id="@+id/btn_save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="把资源图片保存到存储卡"
        android:textColor="@color/black"
        android:textSize="17sp" />

    <TextView
        android:id="@+id/tv_path"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textColor="@color/black"
        android:textSize="17sp" />

</LinearLayout>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第一个布局代码:

package com.example.myapplication;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener
{
    private ImageView iv_content;
    private TextView tv_path;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        iv_content = findViewById(R.id.iv_content);
        iv_content.setImageResource(R.drawable.huawei); // 设置图像视图的图片资源
        tv_path = findViewById(R.id.tv_path);
        findViewById(R.id.btn_save).setOnClickListener(this);
    }

    @Override
    public void onClick(View v)
    {
        if (v.getId() == R.id.btn_save)
        {
            // 获取当前App的私有下载目录
            String path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString() + "/";
            // 从指定的资源文件中获取位图对象
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.huawei);
            String file_path = path + DateUtil.getNowDateTime("") + ".jpeg";
            FileUtil.saveImage(file_path, bitmap); // 把位图对象保存为图片文件
            tv_path.setText("图片文件的保存路径为:\n" + file_path);
            ToastUtil.show(this, "图片已写入存储卡文件");
        }

        startActivity(new Intent(this,MainActivity2.class));

    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

第二个布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="5dp" >

    <Button
        android:id="@+id/btn_delete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除所有图片文件"
        android:textColor="@color/black"
        android:textSize="17sp" />

    <TextView
        android:id="@+id/tv_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="17sp" />

    <ImageView
        android:id="@+id/iv_content"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:scaleType="fitCenter" />

</LinearLayout>

 

 

 

 

 

 

 

 

 

 

 

 

第二个布局代码:

package com.example.myapplication;

import android.graphics.Bitmap;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import java.io.File;
import java.util.ArrayList;
import java.util.List;


public class MainActivity2 extends AppCompatActivity implements View.OnClickListener
{

    private final static String TAG = "ImageReadActivity";
    private TextView tv_content;
    private ImageView iv_content;
    private String mPath; // 私有目录路径
    private List<File> mFilelist = new ArrayList<File>();

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);


        tv_content = findViewById(R.id.tv_content);
        iv_content = findViewById(R.id.iv_content);
        findViewById(R.id.btn_delete).setOnClickListener(this);
        // 获取当前App的私有下载目录
        mPath = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString() + "/";
        showFileContent(); // 显示最新的图片文件内容
    }

    // 显示最新的图片文件内容
    private void showFileContent() {
        // 获得指定目录下面的所有图片文件
        mFilelist = FileUtil.getFileList(mPath, new String[]{".jpeg"});
        if (mFilelist.size() > 0) {
            // 打开并显示选中的图片文件内容
            String file_path = mFilelist.get(0).getAbsolutePath();
            tv_content.setText("找到最新的图片文件,路径为"+file_path);

            // 显示存储卡图片文件的第一种方式:直接调用setImageURI方法
            //iv_content.setImageURI(Uri.parse(file_path)); // 设置图像视图的路径对象


            // 第二种方式:先调用BitmapFactory.decodeFile获得位图,再调用setImageBitmap方法
            //Bitmap bitmap = BitmapFactory.decodeFile(file_path);
            //iv_content.setImageBitmap(bitmap); // 设置图像视图的位图对象


            // 第三种方式:先调用FileUtil.openImage获得位图,再调用setImageBitmap方法
            Bitmap bitmap = FileUtil.openImage(file_path);
            iv_content.setImageBitmap(bitmap); // 设置图像视图的位图对象

        } else
        {
            tv_content.setText("私有目录下未找到任何图片文件");
        }
    }

    @Override
    public void onClick(View v)
    {
        if (v.getId() == R.id.btn_delete)
        {
            for (int i = 0; i < mFilelist.size(); i++)
            {
                // 获取该文件的绝对路径字符串
                String file_path = mFilelist.get(i).getAbsolutePath();
                File f = new File(file_path);
                if (!f.delete()) { // 删除文件,并判断是否成功删除
                    Log.d(TAG, "file_path=" + file_path + ", delete failed");
                }
            }

            ToastUtil.show(this, "已删除私有目录下的所有图片文件");
        }
    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

==========================================================================================

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-07-10 19:00  小白龙白龙马  阅读(139)  评论(0编辑  收藏  举报