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返回 ...
随机推荐
- 理解Linux中断 (1)【转】
转自:http://blog.csdn.net/tommy_wxie/article/details/7425685 版权声明:本文为博主原创文章,未经博主允许不得转载. 一直认为,理解中断是理解内核 ...
- 【jqGrid for ASP.NET MVC Documentation】.学习笔记.2.jqGrid Model-View-Controller 分离
1 基本 分离代码 和 描述 ,在ASP.NET MVC 应用程序中是非常重要的.因此,jqGrid 的 mvc 模式使用一个共同的网格安装设置,包括 Model ,Controller 和 View ...
- iOS 判断相机权限是否被限制,判断相机是否可以使用
判断相机权限是否被限制 需要导入 AVFoundation 类 [objc] view plain copy #import <AVFoundation/AVFoundation.h> ...
- Window下memcached安装与测试步骤
如何在Window下memcached安装与测试步骤 工具/原料 电脑 memcached 软件 方法/步骤 软件包下载 下载Memercached For Windows:http://downlo ...
- linkbutton datagrid showdialog 行效果
protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e) { ListItemType itemTy ...
- 每日一九度之 题目1023:EXCEL排序
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:18804 解决:4240 题目描述: Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. 对每个测试用例 ...
- IE6下 input 背景图滚动问题及标签规范
ie6 背景图滚动问题: <title>ie6下input背景图滚动问题</title> <style> .box{ height:20px; width:300p ...
- vs2013的asp.net 管理
iisexpress.exe /path:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ASP.NETWebAdminFiles /vpath:/AS ...
- js判断radio,checkbox是否选中
从数据库循环数据,多选按钮数组 function type_1(){ //多选 var b= document.getElementsByName('service_zj_ids[]'); var ...
- Wall(凸包POJ 1113)
Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 32360 Accepted: 10969 Description On ...