Android中向SD卡读写数据,读SD卡和手机内存

package com.example.sdoperation;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import android.support.v7.app.ActionBarActivity;import android.support.v7.app.ActionBar;import android.support.v4.app.Fragment;import android.text.format.Formatter;import android.os.Bundle;import android.os.Environment;import android.os.StatFs;import android.util.StateSet;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import android.os.Build;public class MainActivity extends ActionBarActivity implements OnClickListener{        private Button btnSaveSD;        private Button btnReadSD;        private Button btnGetSD;        private Button btnGetPhone;        private TextView tvMemory;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                //获得组件        btnGetSD = (Button) findViewById(R.id.btn_get);        btnSaveSD = (Button)findViewById(R.id.btn_saveSD);        tvMemory = (TextView) findViewById(R.id.tv_memoray);        btnReadSD = (Button)findViewById(R.id.btn_readSD);        btnGetPhone = (Button)findViewById(R.id.btn_readPhone);                //添加点击事件        btnGetSD.setOnClickListener(this);        btnSaveSD.setOnClickListener(this);        btnReadSD.setOnClickListener(this);        btnGetPhone.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {        case R.id.btn_saveSD:            saveFile2Sd();            break;        case R.id.btn_readSD:            readFile2Sd();            break;        case R.id.btn_get:            getSDDetail();            break;        case R.id.btn_readPhone:            getPhoneDetail();            break;        default:            break;        }            }    /**     * 读手机内存     */    private void getPhoneDetail() {        File path = Environment.getDataDirectory();        StatFs stat = new StatFs(path.getPath());        long blockSize = stat.getBlockSize();        long blockCount = stat.getBlockCount();        long avilableBlocks = stat.getAvailableBlocks();                long totalSize = blockSize*blockCount;        long avilableSize = blockSize*avilableBlocks;                String totalSizeStr = Formatter.formatFileSize(this, totalSize);        String alilableSizeStr = Formatter.formatFileSize(this, avilableSize);                tvMemory.setText("总内存:"+totalSizeStr + "可用内存:" +alilableSizeStr);    }    /**     * 读SD卡内存     */    private void getSDDetail() {        File path = Environment.getExternalStorageDirectory();        StatFs stat = new StatFs(path.getPath());        long blockSize = stat.getBlockSize();        long blockCount = stat.getBlockCount();        long avilableBlocks = stat.getAvailableBlocks();                long totalSize = blockSize*blockCount;        long avilableSize = blockSize*avilableBlocks;                String totalSizeStr = Formatter.formatFileSize(this, totalSize);        String alilableSizeStr = Formatter.formatFileSize(this, avilableSize);                tvMemory.setText("总内存:"+totalSizeStr + "可用内存:" +alilableSizeStr);    }    /**     * 向SD卡写数据     */    private void saveFile2Sd()  {        //获得SD卡的状态        String sdState = Environment.getExternalStorageState();        if (sdState.equals(Environment.MEDIA_MOUNTED)) {            File file = new File(Environment.getExternalStorageDirectory(), "info.txt");            FileOutputStream fos;            try {                fos = new FileOutputStream(file);                fos.write("xxx".getBytes());                fos.close();                Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();            } catch (Exception e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        } else {            Toast.makeText(this, "SD卡不存在", Toast.LENGTH_SHORT).show();        }    }        /**     * 从SD卡读数据     */    private void readFile2Sd()  {        //获得SD卡的状态        String sdState = Environment.getExternalStorageState();        if (sdState.equals(Environment.MEDIA_MOUNTED)) {            File file = new File(Environment.getExternalStorageDirectory(), "info.txt");            BufferedReader br;            try {                br = new BufferedReader(new FileReader(file));                String content = br.readLine();                tvMemory.setText(content);                br.close();                Toast.makeText(this, "读取成功", Toast.LENGTH_SHORT).show();            } catch (Exception e) {                Toast.makeText(this, "SD卡不存在", Toast.LENGTH_SHORT).show();            }        } else {            Toast.makeText(this, "SD卡不存在", Toast.LENGTH_SHORT).show();        }    }}