Android sd存储总结

Android项目上难免要使用sd卡存储,前段时间用过之后,现在想起来总结一下,顺便以后方便查阅。也写一个小demo。

源码地址:http://download.csdn.net/detail/qq_16064871/8548857

下面开始贴代码,代码上有注释。

一、DataManage类

package com.example.storagemanagedemo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import android.os.Environment;
import android.util.Log;

public class DataManage {

	// 打开txt文件
	public String OpenTxtFile(String strPathFileName) {
		String strTxtData = "";
		// 获取sd卡存储路径根目录
		File pathFile = Environment.getExternalStorageDirectory();
		// 判断sd卡是否存在
		boolean sdCardExist = Environment.getExternalStorageState().equals(
				android.os.Environment.MEDIA_MOUNTED);
		if (sdCardExist) {
			String strpathFileName = pathFile.toString() + strPathFileName;
			// 判断是否存在这个路径是否存在这个文件
			File absolutPathFileName = new File(strpathFileName);
			if (!absolutPathFileName.exists()) {

			} else {
				strTxtData = ReadTxtDataSDFile(strpathFileName);
			}
		}
		return strTxtData;
	}

	// 保存txt格式文件
	public boolean SaveTxtFile(String strPath, String strFileName,
			String strSaveTxtData) {
		// 判断sd卡是否存在
		boolean sdCardExist = Environment.getExternalStorageState().equals(
				android.os.Environment.MEDIA_MOUNTED);
		if (sdCardExist) {
			// 获取sd卡存储路径根目录
			File pathFile = Environment.getExternalStorageDirectory();

			// 按照SD卡指定的路径创建文件夹
			File absolutPathFile = new File(pathFile.toString() + strPath);
			if (!absolutPathFile.exists()) {
				absolutPathFile.mkdirs();
			}

			// 在指定的文件夹中创建文件
			String strPathFileName = pathFile.toString() + strPath
					+ strFileName;
			File nameFile = new File(strPathFileName);
			if (!nameFile.exists()) {
				try {
					nameFile.createNewFile();
				} catch (IOException e) {
					e.printStackTrace();
					Log.i("Show", e.toString());
				}
			}

			// 调用函数向文件写入数据
			try {
				WiteTxtDataSDFile(strPathFileName, strSaveTxtData);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return false;
	}

	private String ReadTxtDataSDFile(String strpathFileName) {
		String strTxtData = "";
		try {
			FileInputStream fileInputStream = new FileInputStream(
					strpathFileName);
			int length = fileInputStream.available();
			byte[] buffer = new byte[length];
			fileInputStream.read(buffer);
			strTxtData = new String(buffer);
			fileInputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strTxtData;
	}

	// 向文件写入数据
	private void WiteTxtDataSDFile(String strPathFileName, String strSaveTxtData)
			throws IOException {
		File writefile = new File(strPathFileName);
		FileOutputStream fileOutputStream = new FileOutputStream(writefile);
		byte[] buffer = strSaveTxtData.getBytes();
		try {
			fileOutputStream.write(buffer);
			fileOutputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

二、MainActivity类

package com.example.storagemanagedemo;

import java.io.File;

import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.app.Activity;

public class MainActivity extends Activity {

	private DataManage mDataManage = new DataManage();
	private TextView showTextView;
	private TextView storageTextView;
	private EditText inputEditText;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		showTextView = (TextView) findViewById(R.id.textView3);
		storageTextView = (TextView) findViewById(R.id.textView1);
		inputEditText = (EditText) findViewById(R.id.editText1);
		File pathFile = Environment.getExternalStorageDirectory();
		String strpath = "存储位置以及文件名:" + pathFile.toString() + "/txt/result.txt";
		storageTextView.setText(strpath);
	}

	// 按键保存文件
	public void SavePraseData(View v) {
		mDataManage.SaveTxtFile("/txt", "/result.txt", inputEditText.getText()
				.toString());
	}

	// 按键打开文件
	public void OpenPraseData(View v) {
		String strShowDataString = "";
		strShowDataString = mDataManage.OpenTxtFile("/txt/result.txt");
		showTextView.setText(strShowDataString);
	}

}

三、xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ScrollView
        android:id="@+id/scrollView_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="输入数据:" />

                <EditText
                    android:id="@+id/editText1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:ems="10" >

                    <requestFocus />
                </EditText>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="60dp" >

                <TextView
                    android:id="@+id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="打开数据:" />

                <TextView
                    android:id="@+id/textView3"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:text="TextView" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="存储位置以及文件名:" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_marginTop="5dp" >

                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dip"
                    android:onClick="SavePraseData"
                    android:text="写入sd卡" />

                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dip"
                    android:onClick="OpenPraseData"
                    android:text="打开文件" />
            </LinearLayout>
        </LinearLayout>
    </ScrollView>

</LinearLayout>

四、记得在AndroidManifest加入权限。

   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

就这些了,一定记得要加入权限。新手不断成长中,欢迎交流。

项目资源下载:http://download.csdn.net/detail/qq_16064871/8548857

转载请注明出处: http://blog.csdn.net/qq_16064871

时间: 2024-11-05 17:25:08

Android sd存储总结的相关文章

Android——数据存储(四种方式之二)读写SD卡

Android--数据存储(四种方式) 1.SharedPrefereces 只能保存一些简单的数轻量级.XML  存储文件名, 数据保存在data/data/basepackage/shared_prefs/myopt.xml中    实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default) 2.读写SD卡  SD的根目录  适用于数据流读写 实现步骤:加入读写SD卡权限

Android——数据存储(四种方式之一)SharedPrefereces

Android--数据存储(四种方式) 1.SharedPrefereces   轻量级.XML  存储文件名,数据保存在data/data/basepackage/shared_prefs/myopt.xml中   实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default)   2.读写SD卡  SD的根目录  适用于数据流读写 3.SQLite  轻量级.dp文件多用于手机

【Android数据存储】- File

个人学习整理,如有不足之处,请不吝指教.转载请注明:@CSU-Max 读写本应用程序数据文件夹中的文件 此种方法读写的文件在/data/data/<应用程序包名>中 android 中提供了 openFileInput(String fileName) 和 openFileOutput(String fileName, int mode) 两个方法来读取本应用程序数据文件夹中的文件和向其写入. openFileInput(String fileName)    打开文件输入流 openFile

android数据存储_概述

andorid提供了六种方式存储永久的数据,根据需求来使用不同的存储方式,例如是否对于应用程序时私有还是公有,数据存储的空间等. 六个存储方式: 使用SharedPreferences: 这种方式是使用键值对来存储私有的数据 内部存储: 在设备的内存中存储私有数据 外部存储: 在SD卡或其他的外部存储来存储公有数据 SQLite数据库: 在私有的数据库中存储私有的结构花数据 网络存储: 在网络服务中存储数据 私有数据一般情况下不能被访问,但是可以通过content provider来进行对数据的

Android笔记:存储相关,getExternalCacheDir, getExternalFilesDir,getExternalStorageDirectory等

File cacheDir = mContext.getExternalCacheDir(); if(null != cacheDir){    mCacheDirPath = cacheDir.getAbsolutePath() + "/images/"; } if(TextUtils.isEmpty(mCacheDirPath)){    if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState(

android 数据存储的几种方式

总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时采集到的数据需要马上通过网络传输到数据处理中心进行存储并进行处理. 对于Android平台来讲,它的存储方式也不外乎这几种,按方式总体来分,也是文件,数据库和网络.但从开发者的

Android数据存储之Android 6.0运行时权限下文件存储的思考

前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以往直接sdcard根目录上直接新建了一个xxx/cache/目录来做文件存储就会不是那么容易控制了,所以有必要重新认识一下Android文件存储的相关知识了. 背景: 有关外置sdcard的读写权限 <uses-permission android:name="android.permissi

android数据存储_外部存储

源码下载(免下载积分):下载 外部存储并不是一定可以访问的,例如外部存储挂载到电脑上是,或者是SD Card作为外部存储,被移除是,因此在访问外部存储时,一定要保证外部存储是可以获得的.判断外部存储是否已经挂载到了手机上可以这样判断: //判断外部存储是否可以访问,并且可以读写 private boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if (Enviro

android之存储篇——SQLite数据库

转载:android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值. 但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误. 另外, SQLite 在解析CREATE TABLE 语句时