首页 > 代码库 > Android数据存储之SD卡
Android数据存储之SD卡
为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件。SD卡大大扩充手机的存储能力。
操作SD首先要加权限:
<!--在SDCard中创建与删除文件权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><!-- 往SDCard写入数据权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- 从SDCard读取数据权限 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
读写SD卡上的文件请按以下三步进行:
(1)调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序具有读写SD卡的权限;
(2)调用Environment的getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录;
(3)使用FileInputStream FileOutputStream FileReader或者FileWriter读写SD卡里面的文件;
下面以简单实例说明:
1.XML代码:
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context=".MainActivity" >10 11 <Button12 android:id="@+id/button1"13 android:layout_width="match_parent"14 android:layout_height="wrap_content"15 android:layout_alignParentTop="true"16 android:layout_centerHorizontal="true"17 android:text="向SD中写入数据" />18 19 <Button20 android:id="@+id/button2"21 android:layout_width="match_parent"22 android:layout_height="wrap_content"23 android:layout_alignLeft="@+id/button1"24 android:layout_below="@+id/button1"25 android:text="从SD卡中读取数据" />26 27 </RelativeLayout>
2.java代码:
1 package com.example.filesd; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileInputStream; 6 import java.io.FileOutputStream; 7 import java.io.InputStreamReader; 8 import android.os.Bundle; 9 import android.os.Environment;10 import android.app.Activity;11 import android.view.View;12 import android.view.View.OnClickListener;13 import android.widget.Button;14 import android.widget.Toast;15 16 public class MainActivity extends Activity {17 private Button button;18 private Button button2;19 @Override20 protected void onCreate(Bundle savedInstanceState) {21 super.onCreate(savedInstanceState);22 setContentView(R.layout.activity_main);23 button = (Button) this.findViewById(R.id.button1);24 button2 = (Button) this.findViewById(R.id.button2);25 button.setOnClickListener(new OnClickListener() {26 @Override27 public void onClick(View arg0) {28 writeSDcard("Hello,恭喜您数据读取了!");29 }30 });31 button2.setOnClickListener(new OnClickListener() {32 @Override33 public void onClick(View arg0) {34 readSDcard();35 36 }37 });38 }39 40 // 向SD卡写入数据41 private void writeSDcard(String str) {42 try {43 // 判断是否存在SD卡44 if (Environment.getExternalStorageState().equals(45 Environment.MEDIA_MOUNTED)) {46 // 获取SD卡的目录47 File sdDire = Environment.getExternalStorageDirectory();48 FileOutputStream outFileStream = new FileOutputStream(49 sdDire.getCanonicalPath() + "/test.txt");50 outFileStream.write(str.getBytes());51 outFileStream.close();52 Toast.makeText(this, "数据保存到text.txt文件了", Toast.LENGTH_LONG)53 .show();54 }55 } catch (Exception e) {56 e.printStackTrace();57 }58 }59 60 61 // 从SD卡中读取数据62 private void readSDcard() {63 StringBuffer strsBuffer = new StringBuffer();64 try {65 // 判断是否存在SD66 if (Environment.getExternalStorageState().equals(67 Environment.MEDIA_MOUNTED)) {68 File file = new File(Environment.getExternalStorageDirectory()69 .getCanonicalPath() + "/test.txt");70 // 判断是否存在该文件71 if (file.exists()) {72 // 打开文件输入流73 FileInputStream fileR = new FileInputStream(file);74 BufferedReader reads = new BufferedReader(75 new InputStreamReader(fileR));76 String st = null;77 while ((st = reads.readLine()) != null) {78 strsBuffer.append(st);79 }80 fileR.close();81 } else {82 Toast.makeText(this, "该目录下文件不存在", Toast.LENGTH_LONG).show();83 }84 }85 } catch (Exception e) {86 e.printStackTrace();87 }88 Toast.makeText(this, "读取到的数据是:" + strsBuffer.toString() + "",89 Toast.LENGTH_LONG).show();90 }91 }
Android数据存储之SD卡
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。