zoukankan      html  css  js  c++  java
  • Android 开发笔记___SD卡基本操作__图片读取写入

      1 package com.example.alimjan.hello_world.Utils;
      2 
      3 import android.graphics.Bitmap;
      4 import android.graphics.BitmapFactory;
      5 
      6 import java.io.BufferedInputStream;
      7 import java.io.BufferedOutputStream;
      8 import java.io.File;
      9 import java.io.FileInputStream;
     10 import java.io.FileOutputStream;
     11 import java.io.FilenameFilter;
     12 import java.util.ArrayList;
     13 import java.util.Locale;
     14 
     15 public class FileUtil {
     16 
     17     public static void saveText(String path, String txt) {
     18         try {
     19             FileOutputStream fos = new FileOutputStream(path);
     20             fos.write(txt.getBytes());
     21             fos.close();
     22         } catch (Exception e) {
     23             e.printStackTrace();
     24         }
     25     }
     26 
     27     public static String openText(String path) {
     28         String readStr = "";
     29         try {
     30             FileInputStream fis = new FileInputStream(path);
     31             byte[] b = new byte[fis.available()];
     32             fis.read(b);
     33             readStr = new String(b);
     34             fis.close();
     35         } catch (Exception e) {
     36             e.printStackTrace();
     37         }
     38         return readStr;
     39     }
     40 
     41     public static void saveImage(String path, Bitmap bitmap) {
     42         try {
     43             BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
     44             bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);
     45             bos.flush();
     46             bos.close();
     47         } catch (Exception e) {
     48             e.printStackTrace();
     49         }
     50     }
     51     
     52     public static Bitmap openImage(String path) {
     53         Bitmap bitmap = null;
     54         try {
     55             BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
     56             bitmap = BitmapFactory.decodeStream(bis);
     57             bis.close();
     58         } catch (Exception e) {
     59             e.printStackTrace();
     60         }
     61         return bitmap;
     62     }
     63     
     64     public static ArrayList<File> getFileList(String path, String[] extendArray) {
     65         ArrayList<File> displayedContent = new ArrayList<File>();
     66         File[] files = null;
     67         File directory = new File(path);
     68         if (extendArray != null && extendArray.length>0) {
     69             FilenameFilter fileFilter = getTypeFilter(extendArray);
     70             files = directory.listFiles(fileFilter);
     71         } else {
     72             files = directory.listFiles();
     73         }
     74 
     75         if (files != null) {
     76             for (File f : files) {
     77                 if (!f.isDirectory() && !f.isHidden()) {
     78                     displayedContent.add(f);
     79                 }
     80             }
     81         }
     82         return displayedContent;
     83     }
     84 
     85     public static FilenameFilter getTypeFilter(String[] extendArray) {
     86         final ArrayList<String> fileExtensions = new ArrayList<String>();
     87         for (int i=0; i<extendArray.length; i++) {
     88             fileExtensions.add(extendArray[i]);
     89         }
     90         FilenameFilter fileNameFilter = new FilenameFilter() {
     91             @Override
     92             public boolean accept(File directory, String fileName) {
     93                 boolean matched = false;
     94                 File f = new File(String.format("%s/%s",
     95                         directory.getAbsolutePath(), fileName));
     96                 matched = f.isDirectory();
     97                 if (!matched) {
     98                     for (String s : fileExtensions) {
     99                         s = String.format(".{0,}\%s$", s);
    100                         s = s.toUpperCase(Locale.getDefault());
    101                         fileName = fileName.toUpperCase(Locale.getDefault());
    102                         matched = fileName.matches(s);
    103                         if (matched) {
    104                             break;
    105                         }
    106                     }
    107                 }
    108                 return matched;
    109             }
    110         };
    111         return fileNameFilter;
    112     }
    113 
    114 }
      1 package com.example.alimjan.hello_world;
      2 
      3 /**
      4  * Created by alimjan on 7/5/2017.
      5  */
      6 
      7         import android.content.Context;
      8         import android.content.Intent;
      9         import android.graphics.Bitmap;
     10         import android.os.Bundle;
     11         import android.os.Environment;
     12         import android.support.v7.app.AppCompatActivity;
     13         import android.view.View;
     14         import android.view.View.OnClickListener;
     15         import android.widget.AdapterView;
     16         import android.widget.ArrayAdapter;
     17         import android.widget.EditText;
     18         import android.widget.LinearLayout;
     19         import android.widget.Spinner;
     20         import android.widget.TextView;
     21         import android.widget.Toast;
     22         import android.widget.AdapterView.OnItemSelectedListener;
     23 
     24         import com.example.alimjan.hello_world.Utils.DateUtil;
     25         import com.example.alimjan.hello_world.Utils.FileUtil;
     26 
     27 
     28 public class class_4_3_3 extends AppCompatActivity implements OnClickListener {
     29 
     30     private LinearLayout ll_info;
     31     private EditText et_name;
     32     private EditText et_age;
     33     private EditText et_height;
     34     private EditText et_weight;
     35     private boolean bMarried = false;
     36 
     37     private String mPath;
     38     private TextView tv_path;
     39 
     40     @Override
     41     protected void onCreate(Bundle savedInstanceState) {
     42         super.onCreate(savedInstanceState);
     43         setContentView(R.layout.code_4_3_3);
     44         ll_info = (LinearLayout) findViewById(R.id.ll_info);
     45         et_name = (EditText) findViewById(R.id.et_name);
     46         et_age = (EditText) findViewById(R.id.et_age);
     47         et_height = (EditText) findViewById(R.id.et_height);
     48         et_weight = (EditText) findViewById(R.id.et_weight);
     49         tv_path = (TextView) findViewById(R.id.tv_path);
     50         findViewById(R.id.btn_save).setOnClickListener(this);
     51 
     52         ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,
     53                 R.layout.item_select, typeArray);
     54         typeAdapter.setDropDownViewResource(R.layout.item_dropdown);
     55         Spinner sp_married = (Spinner) findViewById(R.id.sp_married);
     56         sp_married.setPrompt("请选择婚姻状况");
     57         sp_married.setAdapter(typeAdapter);
     58         sp_married.setSelection(0);
     59         sp_married.setOnItemSelectedListener(new TypeSelectedListener());
     60 
     61         mPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
     62     }
     63 
     64     private String[] typeArray = {"未婚", "已婚"};
     65     class TypeSelectedListener implements OnItemSelectedListener {
     66         public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
     67             bMarried = (arg2==0)?false:true;
     68         }
     69 
     70         public void onNothingSelected(AdapterView<?> arg0) {
     71         }
     72     }
     73 
     74     @Override
     75     public void onClick(View v) {
     76         if (v.getId() == R.id.btn_save) {
     77             String name = et_name.getText().toString();
     78             String age = et_age.getText().toString();
     79             String height = et_height.getText().toString();
     80             String weight = et_weight.getText().toString();
     81             if (name==null || name.length()<=0) {
     82                 showToast("请先填写姓名");
     83                 return;
     84             }
     85             if (age==null || age.length()<=0) {
     86                 showToast("请先填写年龄");
     87                 return;
     88             }
     89             if (height==null || height.length()<=0) {
     90                 showToast("请先填写身高");
     91                 return;
     92             }
     93             if (weight==null || weight.length()<=0) {
     94                 showToast("请先填写体重");
     95                 return;
     96             }
     97 
     98             if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true) {
     99                 Bitmap bitmap = ll_info.getDrawingCache();
    100                 String file_path = mPath + DateUtil.getCurDateStr("") + ".png";
    101                 FileUtil.saveImage(file_path, bitmap);
    102                 bitmap.recycle();
    103                 tv_path.setText("用户注册信息图片的保存路径为:
    "+file_path);
    104                 showToast("图片已存入SD卡文件");
    105             } else {
    106                 showToast("未发现已挂载的SD卡,请检查");
    107             }
    108         }
    109     }
    110 
    111     @Override
    112     protected void onStart() {
    113         super.onStart();
    114         ll_info.setDrawingCacheEnabled(true);
    115     }
    116 
    117     @Override
    118     protected void onStop() {
    119         super.onStop();
    120         ll_info.setDrawingCacheEnabled(false);
    121     }
    122 
    123     private void showToast(String desc) {
    124         Toast.makeText(this, desc, Toast.LENGTH_SHORT).show();
    125     }
    126 
    127     public static void startHome(Context mcontext){
    128         Intent intent = new Intent(mcontext,class_4_3_3.class);
    129         mcontext.startActivity(intent);
    130     }
    131 
    132 }
      1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      2     android:layout_width="match_parent"
      3     android:layout_height="match_parent"
      4     android:focusable="true"
      5     android:focusableInTouchMode="true"
      6     android:orientation="vertical"
      7     android:padding="10dp" >
      8 
      9     <LinearLayout
     10         android:id="@+id/ll_info"
     11         android:layout_width="match_parent"
     12         android:layout_height="wrap_content"
     13         android:background="#f9f9f9"
     14         android:orientation="vertical" >
     15 
     16         <RelativeLayout
     17             android:layout_width="match_parent"
     18             android:layout_height="50dp" >
     19 
     20             <TextView
     21                 android:id="@+id/tv_name"
     22                 android:layout_width="wrap_content"
     23                 android:layout_height="match_parent"
     24                 android:layout_alignParentLeft="true"
     25                 android:gravity="center"
     26                 android:text="姓名:"
     27                 android:textColor="@color/black"
     28                 android:textSize="17sp" />
     29 
     30             <EditText
     31                 android:id="@+id/et_name"
     32                 android:layout_width="match_parent"
     33                 android:layout_height="match_parent"
     34                 android:layout_marginBottom="5dp"
     35                 android:layout_marginTop="5dp"
     36                 android:layout_toRightOf="@+id/tv_name"
     37                 android:background="@drawable/editext_selector"
     38                 android:gravity="left|center"
     39                 android:hint="请输入姓名"
     40                 android:inputType="text"
     41                 android:maxLength="12"
     42                 android:textColor="@color/black"
     43                 android:textColorHint="@color/grey"
     44                 android:textCursorDrawable="@drawable/text_cursor"
     45                 android:textSize="17sp" />
     46         </RelativeLayout>
     47 
     48         <RelativeLayout
     49             android:layout_width="match_parent"
     50             android:layout_height="50dp" >
     51 
     52             <TextView
     53                 android:id="@+id/tv_age"
     54                 android:layout_width="wrap_content"
     55                 android:layout_height="match_parent"
     56                 android:layout_alignParentLeft="true"
     57                 android:gravity="center"
     58                 android:text="年龄:"
     59                 android:textColor="@color/black"
     60                 android:textSize="17sp" />
     61 
     62             <EditText
     63                 android:id="@+id/et_age"
     64                 android:layout_width="match_parent"
     65                 android:layout_height="match_parent"
     66                 android:layout_marginBottom="5dp"
     67                 android:layout_marginTop="5dp"
     68                 android:layout_toRightOf="@+id/tv_age"
     69                 android:background="@drawable/editext_selector"
     70                 android:gravity="left|center"
     71                 android:hint="请输入年龄"
     72                 android:inputType="number"
     73                 android:maxLength="2"
     74                 android:textColor="@color/black"
     75                 android:textColorHint="@color/grey"
     76                 android:textCursorDrawable="@drawable/text_cursor"
     77                 android:textSize="17sp" />
     78         </RelativeLayout>
     79 
     80         <RelativeLayout
     81             android:layout_width="match_parent"
     82             android:layout_height="50dp" >
     83 
     84             <TextView
     85                 android:id="@+id/tv_height"
     86                 android:layout_width="wrap_content"
     87                 android:layout_height="match_parent"
     88                 android:layout_alignParentLeft="true"
     89                 android:gravity="center"
     90                 android:text="身高:"
     91                 android:textColor="@color/black"
     92                 android:textSize="17sp" />
     93 
     94             <EditText
     95                 android:id="@+id/et_height"
     96                 android:layout_width="match_parent"
     97                 android:layout_height="match_parent"
     98                 android:layout_marginBottom="5dp"
     99                 android:layout_marginTop="5dp"
    100                 android:layout_toRightOf="@+id/tv_height"
    101                 android:background="@drawable/editext_selector"
    102                 android:gravity="left|center"
    103                 android:hint="请输入身高"
    104                 android:inputType="number"
    105                 android:maxLength="3"
    106                 android:textColor="@color/black"
    107                 android:textColorHint="@color/grey"
    108                 android:textCursorDrawable="@drawable/text_cursor"
    109                 android:textSize="17sp" />
    110         </RelativeLayout>
    111 
    112         <RelativeLayout
    113             android:layout_width="match_parent"
    114             android:layout_height="50dp" >
    115 
    116             <TextView
    117                 android:id="@+id/tv_weight"
    118                 android:layout_width="wrap_content"
    119                 android:layout_height="match_parent"
    120                 android:layout_alignParentLeft="true"
    121                 android:gravity="center"
    122                 android:text="体重:"
    123                 android:textColor="@color/black"
    124                 android:textSize="17sp" />
    125 
    126             <EditText
    127                 android:id="@+id/et_weight"
    128                 android:layout_width="match_parent"
    129                 android:layout_height="match_parent"
    130                 android:layout_marginBottom="5dp"
    131                 android:layout_marginTop="5dp"
    132                 android:layout_toRightOf="@+id/tv_weight"
    133                 android:background="@drawable/editext_selector"
    134                 android:gravity="left|center"
    135                 android:hint="请输入体重"
    136                 android:inputType="numberDecimal"
    137                 android:maxLength="5"
    138                 android:textColor="@color/black"
    139                 android:textColorHint="@color/grey"
    140                 android:textCursorDrawable="@drawable/text_cursor"
    141                 android:textSize="17sp" />
    142         </RelativeLayout>
    143 
    144         <RelativeLayout
    145             android:layout_width="match_parent"
    146             android:layout_height="50dp" >
    147 
    148             <TextView
    149                 android:id="@+id/tv_married"
    150                 android:layout_width="wrap_content"
    151                 android:layout_height="match_parent"
    152                 android:layout_alignParentLeft="true"
    153                 android:gravity="center"
    154                 android:text="婚否:"
    155                 android:textColor="@color/black"
    156                 android:textSize="17sp" />
    157 
    158             <Spinner
    159                 android:id="@+id/sp_married"
    160                 android:layout_width="match_parent"
    161                 android:layout_height="match_parent"
    162                 android:layout_toRightOf="@+id/tv_married"
    163                 android:gravity="left|center"
    164                 android:spinnerMode="dialog" />
    165         </RelativeLayout>
    166     </LinearLayout>
    167 
    168     <Button
    169         android:id="@+id/btn_save"
    170         android:layout_width="match_parent"
    171         android:layout_height="wrap_content"
    172         android:text="保存图片到SD卡"
    173         android:textColor="@color/black"
    174         android:textSize="20sp" />
    175 
    176     <TextView
    177         android:id="@+id/tv_path"
    178         android:layout_width="wrap_content"
    179         android:layout_height="match_parent"
    180         android:textColor="@color/black"
    181         android:textSize="17sp" />
    182 
    183 </LinearLayout>

      1 package com.example.alimjan.hello_world;
      2 
      3 import java.io.File;
      4 import java.util.ArrayList;
      5 
      6 /**
      7  * Created by alimjan on 7/5/2017.
      8  */
      9 
     10 import android.content.Context;
     11 import android.content.Intent;
     12 import android.graphics.Bitmap;
     13         import android.os.Bundle;
     14         import android.os.Environment;
     15         import android.support.v7.app.AppCompatActivity;
     16         import android.util.Log;
     17         import android.view.View;
     18         import android.view.View.OnClickListener;
     19         import android.widget.AdapterView;
     20         import android.widget.ArrayAdapter;
     21         import android.widget.Spinner;
     22         import android.widget.ImageView;
     23         import android.widget.Toast;
     24         import android.widget.AdapterView.OnItemSelectedListener;
     25 
     26         import com.example.alimjan.hello_world.Utils.FileUtil;
     27 
     28 /**
     29  * Created by ouyangshen on 2016/10/1.
     30  */
     31 public class class_4_3_3_1 extends AppCompatActivity implements OnClickListener {
     32 
     33     private final static String TAG = "ImageReadActivity";
     34     private ImageView iv_image;
     35     private Spinner sp_file;
     36     private String mPath;
     37 
     38     @Override
     39     protected void onCreate(Bundle savedInstanceState) {
     40         super.onCreate(savedInstanceState);
     41         setContentView(R.layout.code_4_3_3_1);
     42         iv_image = (ImageView) findViewById(R.id.iv_image);
     43         sp_file = (Spinner) findViewById(R.id.sp_file);
     44         findViewById(R.id.btn_delete).setOnClickListener(this);
     45         mPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
     46         if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true) {
     47             refreshSpinner();
     48         } else {
     49             showToast("未发现已挂载的SD卡,请检查");
     50         }
     51     }
     52 
     53     private void refreshSpinner() {
     54         ArrayList<File> fileAlllist = FileUtil.getFileList(mPath, new String[]{".png", ".jpg"});
     55         if (fileAlllist.size() > 0) {
     56             fileArray = new String[fileAlllist.size()];
     57             for (int i=0; i<fileAlllist.size(); i++) {
     58                 fileArray[i] = fileAlllist.get(i).getName();
     59             }
     60             ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,
     61                     R.layout.item_select, fileArray);
     62             typeAdapter.setDropDownViewResource(R.layout.item_dropdown);
     63             sp_file.setPrompt("请选择图片文件");
     64             sp_file.setAdapter(typeAdapter);
     65             sp_file.setSelection(0);
     66             sp_file.setOnItemSelectedListener(new FileSelectedListener());
     67         } else {
     68             fileArray = null;
     69             fileArray = new String[1];
     70             fileArray[0] = "";
     71             ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,
     72                     R.layout.item_select, fileArray);
     73             sp_file.setPrompt(null);
     74             sp_file.setAdapter(typeAdapter);
     75             sp_file.setOnItemSelectedListener(null);
     76             iv_image.setImageDrawable(null);
     77         }
     78     }
     79 
     80     private String[] fileArray;
     81     class FileSelectedListener implements OnItemSelectedListener {
     82         public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
     83             String file_path = mPath + fileArray[arg2];
     84             Bitmap bitmap = FileUtil.openImage(file_path);
     85             iv_image.setImageBitmap(bitmap);
     86         }
     87 
     88         public void onNothingSelected(AdapterView<?> arg0) {
     89         }
     90     }
     91 
     92     @Override
     93     public void onClick(View v) {
     94         if (v.getId() == R.id.btn_delete) {
     95             for (int i=0; i<fileArray.length; i++) {
     96                 String file_path = mPath + fileArray[i];
     97                 File f = new File(file_path);
     98                 boolean result = f.delete();
     99                 if (result != true) {
    100                     Log.d(TAG, "file_path="+file_path+", delete failed");
    101                 }
    102             }
    103             refreshSpinner();
    104             showToast("已删除临时目录下的所有图片文件");
    105         }
    106     }
    107 
    108     private void showToast(String desc) {
    109         Toast.makeText(this, desc, Toast.LENGTH_SHORT).show();
    110     }
    111 
    112     public static void startHome(Context mcontext){
    113         Intent intent = new Intent(mcontext,class_4_3_3_1.class);
    114         mcontext.startActivity(intent);
    115     }
    116 
    117 }
     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     android:layout_width="match_parent"
     3     android:layout_height="match_parent"
     4     android:focusable="true"
     5     android:focusableInTouchMode="true"
     6     android:orientation="vertical"
     7     android:padding="10dp" >
     8 
     9     <Button
    10         android:id="@+id/btn_delete"
    11         android:layout_width="match_parent"
    12         android:layout_height="wrap_content"
    13         android:text="删除所有图片文件"
    14         android:textColor="@color/black"
    15         android:textSize="20sp" />
    16 
    17     <RelativeLayout
    18         android:layout_width="match_parent"
    19         android:layout_height="50dp" >
    20 
    21         <TextView
    22             android:id="@+id/tv_file"
    23             android:layout_width="wrap_content"
    24             android:layout_height="match_parent"
    25             android:layout_alignParentLeft="true"
    26             android:gravity="center"
    27             android:text="文件名:"
    28             android:textColor="@color/black"
    29             android:textSize="17sp" />
    30 
    31         <Spinner
    32             android:id="@+id/sp_file"
    33             android:layout_width="match_parent"
    34             android:layout_height="match_parent"
    35             android:layout_toRightOf="@+id/tv_file"
    36             android:gravity="left|center"
    37             android:spinnerMode="dialog" />
    38     </RelativeLayout>
    39 
    40     <ImageView
    41         android:id="@+id/iv_image"
    42         android:layout_width="match_parent"
    43         android:layout_height="wrap_content"
    44         android:scaleType="fitCenter" />
    45 
    46 </LinearLayout>

  • 相关阅读:
    git fetch, merge, pull, push需要注意的地方
    记录一次数据库驱动配置引发的惨案
    IntelliJ Idea 常用快捷键列表
    数据库设计范式
    windows下mysql服务常用操作
    开源协议知多少
    Error creating bean
    Validation failed for query for method
    Not supported for DML operations
    404
  • 原文地址:https://www.cnblogs.com/alimjan/p/7122641.html
Copyright © 2011-2022 走看看