zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    
    }
  • 相关阅读:
    SpringCloud教程第10篇:高可用的服务注册中心(F版本)
    SpringCloud教程第9篇:Sleuth(F版本)
    requests.session保持会话
    Jmeter Constant Throughput Timer 使用
    Jmeter提取响应数据的结果保存到本地的一个文件
    练习2
    练习1
    一道简单的练习题
    Maven下org.junit.Test无法使用
    [转]解决pycharm无法导入本地包的问题(Unresolved reference 'tutorial')
  • 原文地址:https://www.cnblogs.com/E-star/p/3855006.html
Copyright © 2011-2022 走看看