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();
        }
    }

}

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

时间: 2024-10-01 12:33:38

Android中向SD卡读写数据,读SD卡和手机内存的相关文章

Android中使用log4j输出log内容到sd卡

在android中,实现输出log内容到sd卡中的文件里面,做法是: 还是相对来说,log4j,算是好用. 1.下载android的log4j的库(的封装) 去:http://code.google.com/p/android-logging-log4j/ 下载对应的android-logging-log4j-1.0.3.jar,加到项目中. 2.再去下载所依赖的apache的log4j库 去:http://logging.apache.org/log4j/1.2/download.html 下

Android中使用File文件进行数据存储

Android中使用File文件进行数据存储 上一篇学到使用SharedPerences进行数据存储,接下来学习一下使用File进行存储 我们有时候可以将数据直接以文件的形式保存在设备中, 例如:文本文件,图片文件等等 使用File进行存储操作主要使用到以下的 ①:public abstract FileInputStream openFileInput (String name) 这个主要是打开文件,返回FileInputStream ②:public abstract FileOutputS

Android中使用Gson解析JSON数据的两种方法

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组

Android中常用的五种数据存储方式

第一种: 使用SharedPreferences存储数据 适用范围: 保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口 令密码等 核心原理: 保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息.通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data/<package name

Android中解析JSON形式的数据

1.JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. 2.JSON的结构: (1) Name/Value Pairs(无序的):类似所熟知的Keyed list. Hash table.Disctionary和Assoc

Android--向SD卡读写数据

// 向SD卡写入数据 private void writeSDcard(String str) { try { // 判断是否存在SD卡 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { // 获取SD卡的目录 File sdDire = Environment.getExternalStorageDirectory(); FileOutputStream outFileStream

在Android中利用SQLite实现对数据的增删查改

停更了一天,I'm back again~~当我们需要操作大量的数据时,我们首先想到的当然是数据库,因为可以通过简单的语句实现数据的增删改查,在Android中,我们不使用SQL或者ORACLE,我们使用SQLite,因为它占用资源更少,而语句格式与SQL语句一样. 首先,我们来在Android中实现数据库的创建与增删改查,引用数据库的类时,不再继承常用的Activity类,而是继承Android中的SQLiteOpenHelper,创建一个构造方法,四个参数分别是(Context contex

Android中ListView分页加载数据

熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们今天就要讲一讲列表组件ListView加载数据的相关内容.通常来说,一个应用在展现大量数据时,不会将全部的可用数据都呈现给用户,因为这不管对于服务端还是客户端来说都是不小的压力,因此,很多应用都是采用分批次加载的形式来获取用户所需的数据.比如:微博客户端可能会在用户滑动至列表底端时自动加载下一页数据,也可能在底部放置一个“加载更多”按钮,用户点击后,加载

Android中ListView分页加载数据-转

Android应用开发中,采用ListView组件来展示数据是很常用的功能,当一个应用要展现很多的数据时,一般情况下都不会把所有的数据一次就展示出来,而是通过分页的形式来展示数据,个人觉得这样会有更好的用户体验.因此,很多应用都是采用分批次加载的形式来获取用户所需的数据.例如:微博客户端可能会在用户滑动至列表底端时自动加载下一页数据,也可能在底部放置一个"查看更多"按钮,用户点击后,加载下一页数据. 下面通过一个Demo来展示ListView功能如何实现:该Demo通过在ListVie