• 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();
            }
        }
    
    }
  • 相关阅读:
    Java基础-学习笔记(十)——内部类(嵌套类)
    Java基础-学习笔记(九)——static关键字
    Java基础-学习笔记(八)——函数的参数传递
    JS获取当前时间转成时间戳,并比较两个时间戳得出相差的天数
    tp6的with关联使用(删查),insertAll批量增加
    Vue父子组件的相互调用方法与参数
    Vue父子组件之间的通信
    Vue组价的基本使用
    PHP接入图片文字识别AIP
    EC6模块化的导入和导出
  • 原文地址:https://www.cnblogs.com/E-star/p/3855006.html
Copyright © 2020-2023  润新知