1 package com.example.administrator.myapplication.activity; 2 3 import android.os.Bundle; 4 import android.os.Environment; 5 import android.support.v7.app.AppCompatActivity; 6 import android.view.View; 7 import android.widget.Button; 8 import android.widget.Toast; 9 10 import com.example.administrator.myapplication.R; 11 import com.example.administrator.myapplication.entity.SDCard; 12 13 import java.io.File; 14 import java.io.FileInputStream; 15 import java.io.FileOutputStream; 16 import java.io.IOException; 17 import java.io.ObjectInputStream; 18 import java.io.ObjectOutputStream; 19 20 public class SdCardActivity extends AppCompatActivity { 21 Button writeBtn; 22 Button readBtn; 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_sd_card); 27 inno(); 28 } 29 30 private void inno() { 31 writeBtn = (Button) findViewById(R.id.write); 32 writeBtn.setOnClickListener(new View.OnClickListener() { 33 @Override 34 public void onClick(View v) { 35 WriteToSD(); 36 } 37 }); 38 readBtn = (Button) findViewById(R.id.read); 39 readBtn.setOnClickListener(new View.OnClickListener() { 40 @Override 41 public void onClick(View v) { 42 ReadFormSD(); 43 } 44 }); 45 } 46 47 //保存文件到SD卡 48 private void WriteToSD(){ 49 ObjectOutputStream oos = null; 50 //Environment.getExternalStorageState获取外部存储的状态 51 String state = Environment.getExternalStorageState(); 52 //外部存储正常 如果SD卡存在 53 if (state.equals(Environment.MEDIA_MOUNTED)){ 54 //获取外部存储的根路径 55 File root = Environment.getExternalStorageDirectory(); 56 //在SD卡下创建新的文件夹 57 File TargetDir = new File(root,super.getPackageName()); 58 //若不存在,创建文件夹 59 if (!TargetDir.exists()){ 60 TargetDir.mkdir(); 61 } 62 try { 63 oos = new ObjectOutputStream(new FileOutputStream(new File(TargetDir+"SDCard.txt"))); 64 SDCard sdCard = new SDCard("小宝","是大二的!"); 65 oos.writeObject(sdCard); 66 Toast.makeText(getApplication(),"写入SD卡成功!",Toast.LENGTH_SHORT).show(); 67 } catch (IOException e) { 68 e.printStackTrace(); 69 }finally { 70 try { 71 oos.flush(); 72 oos.close(); 73 } catch (IOException e) { 74 e.printStackTrace(); 75 } 76 } 77 }else { 78 Toast.makeText(getApplication(),"没有找到SD卡",Toast.LENGTH_SHORT).show(); 79 } 80 } 81 82 //从SD卡读取文件 83 private void ReadFormSD(){ 84 ObjectInputStream ois = null; 85 String state = Environment.getExternalStorageState(); 86 if (state.equals(Environment.MEDIA_MOUNTED)){ 87 File root = Environment.getExternalStorageDirectory(); 88 File TargetDir = new File(root,super.getPackageName()); 89 if (TargetDir.exists()){ 90 try { 91 ois = new ObjectInputStream(new FileInputStream(new File(TargetDir+"SDCard.txt"))); 92 SDCard sdCard = (SDCard) ois.readObject(); 93 Toast.makeText(SdCardActivity.this,sdCard.getName()+" "+sdCard.getIntroduce(),Toast.LENGTH_SHORT).show(); 94 } catch (IOException e) { 95 e.printStackTrace(); 96 } catch (ClassNotFoundException e) { 97 e.printStackTrace(); 98 }finally { 99 try { 100 ois.close(); 101 } catch (IOException e) { 102 e.printStackTrace(); 103 } 104 } 105 } 106 } 107 } 108 }