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 }

    write

      1 package com.example.alimjan.hello_world;
      2 
      3 /**
      4  * Created by alimjan on 7/5/2017.
      5  */
      6 
      7 
      8         import android.content.Context;
      9         import android.content.Intent;
     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.Spinner;
     19         import android.widget.TextView;
     20         import android.widget.Toast;
     21         import android.widget.AdapterView.OnItemSelectedListener;
     22 
     23         import com.example.alimjan.hello_world.Utils.DateUtil;
     24         import com.example.alimjan.hello_world.Utils.FileUtil;
     25 
     26 
     27 public class class_4_3_2 extends AppCompatActivity implements OnClickListener {
     28 
     29     private EditText et_name;
     30     private EditText et_age;
     31     private EditText et_height;
     32     private EditText et_weight;
     33     private boolean bMarried = false;
     34 
     35     private String mPath;
     36     private TextView tv_path;
     37 
     38     @Override
     39     protected void onCreate(Bundle savedInstanceState) {
     40         super.onCreate(savedInstanceState);
     41         setContentView(R.layout.code_4_3_2);
     42         et_name = (EditText) findViewById(R.id.et_name);
     43         et_age = (EditText) findViewById(R.id.et_age);
     44         et_height = (EditText) findViewById(R.id.et_height);
     45         et_weight = (EditText) findViewById(R.id.et_weight);
     46         tv_path = (TextView) findViewById(R.id.tv_path);
     47         findViewById(R.id.btn_save).setOnClickListener(this);
     48 
     49         ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,
     50                 R.layout.item_select, typeArray);
     51         typeAdapter.setDropDownViewResource(R.layout.item_dropdown);
     52         Spinner sp_married = (Spinner) findViewById(R.id.sp_married);
     53         sp_married.setPrompt("请选择婚姻状况");
     54         sp_married.setAdapter(typeAdapter);
     55         sp_married.setSelection(0);
     56         sp_married.setOnItemSelectedListener(new TypeSelectedListener());
     57 
     58         mPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
     59     }
     60 
     61     private String[] typeArray = {"未婚", "已婚"};
     62     class TypeSelectedListener implements OnItemSelectedListener {
     63         public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
     64             bMarried = (arg2==0)?false:true;
     65         }
     66 
     67         public void onNothingSelected(AdapterView<?> arg0) {
     68         }
     69     }
     70 
     71     @Override
     72     public void onClick(View v) {
     73         if (v.getId() == R.id.btn_save) {
     74             String name = et_name.getText().toString();
     75             String age = et_age.getText().toString();
     76             String height = et_height.getText().toString();
     77             String weight = et_weight.getText().toString();
     78             if (name==null || name.length()<=0) {
     79                 showToast("请先填写姓名");
     80                 return;
     81             }
     82             if (age==null || age.length()<=0) {
     83                 showToast("请先填写年龄");
     84                 return;
     85             }
     86             if (height==null || height.length()<=0) {
     87                 showToast("请先填写身高");
     88                 return;
     89             }
     90             if (weight==null || weight.length()<=0) {
     91                 showToast("请先填写体重");
     92                 return;
     93             }
     94 
     95             String content = "";
     96             content = String.format("%s 姓名:%s
    ", content, name);
     97             content = String.format("%s 年龄:%s
    ", content, age);
     98             content = String.format("%s 身高:%scm
    ", content, height);
     99             content = String.format("%s 体重:%skg
    ", content, weight);
    100             content = String.format("%s 婚否:%s
    ", content, typeArray[bMarried==false?0:1]);
    101             content = String.format("%s 注册时间:%s
    ", content, DateUtil.getCurDateStr("yyyy-MM-dd HH:mm:ss"));
    102             if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true) {
    103                 String file_path = mPath + DateUtil.getCurDateStr("") + ".txt";
    104                 FileUtil.saveText(file_path, content);
    105                 tv_path.setText("用户注册信息文件的保存路径为:
    "+file_path);
    106                 showToast("数据已写入SD卡文件");
    107             } else {
    108                 showToast("未发现已挂载的SD卡,请检查");
    109             }
    110         }
    111     }
    112 
    113     private void showToast(String desc) {
    114         Toast.makeText(this, desc, Toast.LENGTH_SHORT).show();
    115     }
    116 
    117     public static void startHome(Context mcontext){
    118         Intent intent = new Intent(mcontext,class_4_3_2.class);
    119         mcontext.startActivity(intent);
    120     }
    121 
    122 }
      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     <RelativeLayout
     10         android:layout_width="match_parent"
     11         android:layout_height="50dp" >
     12 
     13         <TextView
     14             android:id="@+id/tv_name"
     15             android:layout_width="wrap_content"
     16             android:layout_height="match_parent"
     17             android:layout_alignParentLeft="true"
     18             android:gravity="center"
     19             android:text="姓名:"
     20             android:textColor="@color/black"
     21             android:textSize="17sp" />
     22 
     23         <EditText
     24             android:id="@+id/et_name"
     25             android:layout_width="match_parent"
     26             android:layout_height="match_parent"
     27             android:layout_marginBottom="5dp"
     28             android:layout_marginTop="5dp"
     29             android:layout_toRightOf="@+id/tv_name"
     30             android:background="@drawable/editext_selector"
     31             android:gravity="left|center"
     32             android:hint="请输入姓名"
     33             android:inputType="text"
     34             android:maxLength="12"
     35             android:textColor="@color/black"
     36             android:textColorHint="@color/grey"
     37             android:textCursorDrawable="@drawable/text_cursor"
     38             android:textSize="17sp" />
     39     </RelativeLayout>
     40 
     41     <RelativeLayout
     42         android:layout_width="match_parent"
     43         android:layout_height="50dp" >
     44 
     45         <TextView
     46             android:id="@+id/tv_age"
     47             android:layout_width="wrap_content"
     48             android:layout_height="match_parent"
     49             android:layout_alignParentLeft="true"
     50             android:gravity="center"
     51             android:text="年龄:"
     52             android:textColor="@color/black"
     53             android:textSize="17sp" />
     54 
     55         <EditText
     56             android:id="@+id/et_age"
     57             android:layout_width="match_parent"
     58             android:layout_height="match_parent"
     59             android:layout_marginBottom="5dp"
     60             android:layout_marginTop="5dp"
     61             android:layout_toRightOf="@+id/tv_age"
     62             android:background="@drawable/editext_selector"
     63             android:gravity="left|center"
     64             android:hint="请输入年龄"
     65             android:inputType="number"
     66             android:maxLength="2"
     67             android:textColor="@color/black"
     68             android:textColorHint="@color/grey"
     69             android:textCursorDrawable="@drawable/text_cursor"
     70             android:textSize="17sp" />
     71     </RelativeLayout>
     72 
     73     <RelativeLayout
     74         android:layout_width="match_parent"
     75         android:layout_height="50dp" >
     76 
     77         <TextView
     78             android:id="@+id/tv_height"
     79             android:layout_width="wrap_content"
     80             android:layout_height="match_parent"
     81             android:layout_alignParentLeft="true"
     82             android:gravity="center"
     83             android:text="身高:"
     84             android:textColor="@color/black"
     85             android:textSize="17sp" />
     86 
     87         <EditText
     88             android:id="@+id/et_height"
     89             android:layout_width="match_parent"
     90             android:layout_height="match_parent"
     91             android:layout_marginBottom="5dp"
     92             android:layout_marginTop="5dp"
     93             android:layout_toRightOf="@+id/tv_height"
     94             android:background="@drawable/editext_selector"
     95             android:gravity="left|center"
     96             android:hint="请输入身高"
     97             android:inputType="number"
     98             android:maxLength="3"
     99             android:textColor="@color/black"
    100             android:textColorHint="@color/grey"
    101             android:textCursorDrawable="@drawable/text_cursor"
    102             android:textSize="17sp" />
    103     </RelativeLayout>
    104 
    105     <RelativeLayout
    106         android:layout_width="match_parent"
    107         android:layout_height="50dp" >
    108 
    109         <TextView
    110             android:id="@+id/tv_weight"
    111             android:layout_width="wrap_content"
    112             android:layout_height="match_parent"
    113             android:layout_alignParentLeft="true"
    114             android:gravity="center"
    115             android:text="体重:"
    116             android:textColor="@color/black"
    117             android:textSize="17sp" />
    118 
    119         <EditText
    120             android:id="@+id/et_weight"
    121             android:layout_width="match_parent"
    122             android:layout_height="match_parent"
    123             android:layout_marginBottom="5dp"
    124             android:layout_marginTop="5dp"
    125             android:layout_toRightOf="@+id/tv_weight"
    126             android:background="@drawable/editext_selector"
    127             android:gravity="left|center"
    128             android:hint="请输入体重"
    129             android:inputType="numberDecimal"
    130             android:maxLength="5"
    131             android:textColor="@color/black"
    132             android:textColorHint="@color/grey"
    133             android:textCursorDrawable="@drawable/text_cursor"
    134             android:textSize="17sp" />
    135     </RelativeLayout>
    136 
    137     <RelativeLayout
    138         android:layout_width="match_parent"
    139         android:layout_height="50dp" >
    140 
    141         <TextView
    142             android:id="@+id/tv_married"
    143             android:layout_width="wrap_content"
    144             android:layout_height="match_parent"
    145             android:layout_alignParentLeft="true"
    146             android:gravity="center"
    147             android:text="婚否:"
    148             android:textColor="@color/black"
    149             android:textSize="17sp" />
    150 
    151         <Spinner
    152             android:id="@+id/sp_married"
    153             android:layout_width="match_parent"
    154             android:layout_height="match_parent"
    155             android:layout_toRightOf="@+id/tv_married"
    156             android:gravity="left|center"
    157             android:spinnerMode="dialog" />
    158     </RelativeLayout>
    159 
    160     <Button
    161         android:id="@+id/btn_save"
    162         android:layout_width="match_parent"
    163         android:layout_height="wrap_content"
    164         android:text="保存文本到SD卡"
    165         android:textColor="@color/black"
    166         android:textSize="20sp" />
    167 
    168     <TextView
    169         android:id="@+id/tv_path"
    170         android:layout_width="wrap_content"
    171         android:layout_height="match_parent"
    172         android:textColor="@color/black"
    173         android:textSize="17sp" />
    174 
    175 </LinearLayout>

    read

      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 
     11         import com.example.alimjan.hello_world.Utils.FileUtil;
     12 
     13 import android.content.Context;
     14 import android.content.Intent;
     15 import android.os.Bundle;
     16         import android.os.Environment;
     17         import android.support.v7.app.AppCompatActivity;
     18         import android.util.Log;
     19         import android.view.View;
     20         import android.view.View.OnClickListener;
     21         import android.widget.AdapterView;
     22         import android.widget.ArrayAdapter;
     23         import android.widget.Spinner;
     24         import android.widget.TextView;
     25         import android.widget.Toast;
     26         import android.widget.AdapterView.OnItemSelectedListener;
     27 
     28 public class class_4_3_2_1 extends AppCompatActivity implements OnClickListener {
     29 
     30     private final static String TAG = "TextReadActivity";
     31     private TextView tv_text;
     32     private Spinner sp_file;
     33     private String mPath;
     34 
     35     @Override
     36     protected void onCreate(Bundle savedInstanceState) {
     37         super.onCreate(savedInstanceState);
     38         setContentView(R.layout.code_4_3_2_1);
     39         tv_text = (TextView) findViewById(R.id.tv_text);
     40         sp_file = (Spinner) findViewById(R.id.sp_file);
     41         findViewById(R.id.btn_delete).setOnClickListener(this);
     42         mPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
     43         if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true) {
     44             refreshSpinner();
     45         } else {
     46             showToast("未发现已挂载的SD卡,请检查");
     47         }
     48     }
     49 
     50     private void refreshSpinner() {
     51         ArrayList<File> fileAlllist = FileUtil.getFileList(mPath, new String[]{".txt"});
     52         if (fileAlllist.size() > 0) {
     53             fileArray = new String[fileAlllist.size()];
     54             for (int i=0; i<fileAlllist.size(); i++) {
     55                 fileArray[i] = fileAlllist.get(i).getName();
     56             }
     57             ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,
     58                     R.layout.item_select, fileArray);
     59             typeAdapter.setDropDownViewResource(R.layout.item_dropdown);
     60             sp_file.setPrompt("请选择文本文件");
     61             sp_file.setAdapter(typeAdapter);
     62             sp_file.setSelection(0);
     63             sp_file.setOnItemSelectedListener(new FileSelectedListener());
     64         } else {
     65             fileArray = null;
     66             fileArray = new String[1];
     67             fileArray[0] = "";
     68             ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,
     69                     R.layout.item_select, fileArray);
     70             sp_file.setPrompt(null);
     71             sp_file.setAdapter(typeAdapter);
     72             sp_file.setOnItemSelectedListener(null);
     73             tv_text.setText("");
     74         }
     75     }
     76 
     77     private String[] fileArray;
     78     class FileSelectedListener implements OnItemSelectedListener {
     79         public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
     80             String file_path = mPath + fileArray[arg2];
     81             String content = FileUtil.openText(file_path);
     82             tv_text.setText("文件内容如下:
    "+content);
     83         }
     84 
     85         public void onNothingSelected(AdapterView<?> arg0) {
     86         }
     87     }
     88 
     89     @Override
     90     public void onClick(View v) {
     91         if (v.getId() == R.id.btn_delete) {
     92             for (int i=0; i<fileArray.length; i++) {
     93                 String file_path = mPath + fileArray[i];
     94                 File f = new File(file_path);
     95                 boolean result = f.delete();
     96                 if (result != true) {
     97                     Log.d(TAG, "file_path="+file_path+", delete failed");
     98                 }
     99             }
    100             refreshSpinner();
    101             showToast("已删除临时目录下的所有文本文件");
    102         }
    103     }
    104 
    105     private void showToast(String desc) {
    106         Toast.makeText(this, desc, Toast.LENGTH_SHORT).show();
    107     }
    108 
    109     public static void startHome(Context mcontext){
    110         Intent intent = new Intent(mcontext,class_4_3_2_1.class);
    111         mcontext.startActivity(intent);
    112     }
    113 
    114 }
     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     <TextView
    41         android:id="@+id/tv_text"
    42         android:layout_width="match_parent"
    43         android:layout_height="wrap_content"
    44         android:textColor="@color/black"
    45         android:textSize="17sp" />
    46 
    47 </LinearLayout>
  • 相关阅读:
    【长安十二时辰】 刺客信条风格剪辑
    【Oracle 触发器】(6)触发器应用场景--数据的备份和同步
    【Oracle 触发器】(5)触发器应用场景--数据库的审计
    银行窗口取号系统,共享数据的线程安全性
    模板方法
    创建线程时如果既传入了runnable对象,又继承thread重写了run方法,会执行哪里的代码
    启动线程用start方法而不是run方法
    java的回调
    java中的闭包
    静态内部类
  • 原文地址:https://www.cnblogs.com/alimjan/p/7120588.html
Copyright © 2011-2022 走看看