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卡和手机内存的更多相关文章
- Android中使用File文件进行数据存储
Android中使用File文件进行数据存储 上一篇学到使用SharedPerences进行数据存储,接下来学习一下使用File进行存储 我们有时候可以将数据直接以文件的形式保存在设备中, 例如:文本 ...
- Android中使用Gson解析JSON数据的两种方法
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
- Android中使用Gson解析JSON数据
Android中使用Gson解析JSON数据 在Android中可以使用Gson解析JSON数据 首先,从 code.google.com/p/google-gson/downloads/list ...
- Android中常用的五种数据存储方式
第一种: 使用SharedPreferences存储数据 适用范围: 保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小 ...
- 从源码看Android中sqlite是怎么通过cursorwindow读DB的
更多内容在这里查看 https://ahangchen.gitbooks.io/windy-afternoon/content/ 执行query 执行SQLiteDatabase类中query系列函数 ...
- Android中解析JSON形式的数据
1.JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式, ...
- Android--向SD卡读写数据
// 向SD卡写入数据 private void writeSDcard(String str) { try { // 推断是否存在SD卡 if (Environment.getExternalSto ...
- 缓存AsimpleCache -- 解决Android中Sharedpreferences无法存储List数据/ASimpleCache
Sharedpreferences想必大家在项目中都经常会用到,但是如果需要在本地需要存储比较多的数据,存储一个集合的时,发现Sharedpreferences并不 是那么好使了. 分析 如果需要在本 ...
- Android中Activity和Service的数据通讯
在Android中,我们通常需要Activity跟Service进行通讯,很多人只知道Activity掉用Service,却不知道Service如何将数据返回给Activity.其实Service返回 ...
随机推荐
- js 如何生成唯一且不可预测的 ID
通常数据库可以生成唯一的 ID,最多的就是数字序列,也有像 MongoDB 这样产生组合序列的,不过这种形式的 ID 由于是序列,是可以预测的.如果想得到不可预测且唯一的 ID,方法还是有的. 下面主 ...
- shell获取目录下最新的文件,文件是以日期命名
如果你为每个文件按日期命名的格式都一致的话,那么 "ls -l" 命令列出的文件列表就是默认按文件名称(日期先后)排序的.那么最后一个就是最新的,文件名可以用以下方式获取.file ...
- Centos6.5和Centos7 php环境搭建如何实现呢
首先我们先查看下centos的版本信息 代码如下: #适用于所有的linux lsb_release -a#或者cat /etc/redhat-release#又或者rpm -q centos-rel ...
- 第一个应用程序HelloWorld
iOS7 Beta已经发布了,迫不及待地下载了iOS 7及Xcode 5并体验了一下.先做一个简单的Hello World看看都有哪些变化吧.1. 启动Xcode5-DP:2. 从菜单选择File-N ...
- HDU:过山车(二分图最大匹配)
http://acm.hdu.edu.cn/showproblem.php?pid=2063 题意:有m个男,n个女,和 k 条边,求有多少对男女可以搭配. 思路:裸的二分图最大匹配,匈牙利算法. 枚 ...
- idea项目无法自动导入maven库
解决:idea版本由15.0.*(需要Java8)降为14.1.4(Java7即可),搞定......
- sql排序 去除默认升降序排序case方法////遍历数据库所有表及统计表数据总数
case排序法: end 还有EXEC法 可以网上查 SQLServer遍历数据库所有表及统计表数据总数: DECLARE @TableName varchar(); CREATE TABLE #Ge ...
- Visual Studio + SqlServer
vs2010: http://pan.baidu.com/s/1eQrlUwU sqlServer2008: http://pan.baidu.com/s/1sjQbyk1
- Opencv中直线的表示方法
[blog算法原理]Opencv中直线的表示方法 一.问题的提出: 在实际项目编写过程中,需要对直线(Line)进行特定的处 ...
- Uva 1347,旅行
题目链接:https://uva.onlinejudge.org/external/13/1347.pdf 这个题和uva 1658题目很像,只是加了一点,就是每个点都要走,刚开始,我以为可以直接拆点 ...