Android数据存储(2)向机身内存(Internal Storage)和SDcard(External Storage)读写数据实例
来源:互联网 发布:kali linux gnuradio 编辑:程序博客网 时间:2024/05/18 06:58
总的来说向内存和SDcard中读写数据和java io操作基本差不多 而机身内存读取和SDcard读取数据有少许差别
- 欢迎加入QQ交流3群:317874559
机身内存数据读写
1.机身内存读取主要用个两个类文件输入流(FileInputStream)和文件输出流(FileOutputStream): FileInputStream fileInput = this.openFileInput("test.txt") 第一个参数为 data/此程序包名/data/test.txt 文件下 的文件名 ;
FileOutputStream fileOut = this.openFileOutput("test.txt",this.MODE_APPEND)第一个参数表示文件名 第二个参数表示打开的方式
2.获取了文件输入输出流之后 其后的文件的读写和基本的IO操作一样
SDcard数据读写
1.SDcard数据读写需要注定的先要在Androidmainfest.xml文件中注册新建删除和读写的权限 :
<!-- 在SD卡上创建与删除权限 -->
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
<!-- 向SD卡上写入权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2.读写的基本流程就是:
2. 1 通过Environment类的getExternalStorageState()方法来判断手机是否有SDcard: Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
2.2 最通过getExternalStorageDirectory()方法来获取文件目录:File file = new File(Environment.getExternalStorageDirectory().getCanonicalPath() + "/test.txt"); 读写的文件都在sdcrad文件夹中 通过File Explorer可以导出来
2.3 其后就和基本IO操作相同了
2.4还有要注意一点的是 在运行的模拟器的时候要附带虚拟的SDcard时 要在Run as->Run Configurations 中要关联一下 如下图
机身内存数据读写实例
- <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"
- android:layout_gravity="center_horizontal"
- android:orientation="vertical"
- tools:context=".MainActivity" >
- <EditText
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/ed1"
- android:inputType="textMultiLine"/>
- <Button
- android:id="@+id/write"
- android:text="写入"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
- <Button
- android:id="@+id/read"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="读入"/>
- <EditText
- android:id="@+id/ed2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:inputType="textMultiLine"/>
- <Button
- android:id="@+id/delete"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="删除指定的文件"
- />
- <EditText
- android:id="@+id/ed3"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
- package com.android.xiong.fileiotest;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStreamReader;
- import java.lang.reflect.Array;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- public class MainActivity extends Activity {
- private Button read;
- private Button write;
- private EditText ed1;
- private EditText ed2;
- private EditText ed3;
- private Button delete;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- read = (Button) findViewById(R.id.read);
- write = (Button) findViewById(R.id.write);
- delete = (Button) findViewById(R.id.delete);
- ed3 = (EditText) findViewById(R.id.ed3);
- ed2 = (EditText) findViewById(R.id.ed2);
- ed1 = (EditText) findViewById(R.id.ed1);
- write.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- String str = ed1.getText().toString();
- if (!str.equals("")) {
- write(str);
- }
- }
- });
- read.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- read();
- }
- });
- delete.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- String str = ed3.getText().toString();
- if (!str.equals("")) {
- deleteFiles(str);
- } else {
- ed3.setText(str + ":该文件输入错误或不存在!");
- }
- }
- });
- }
- private void write(String content) {
- try {
- // 以追加的方式打开文件输出流
- FileOutputStream fileOut = this.openFileOutput("test.txt",
- this.MODE_APPEND);
- // 写入数据
- fileOut.write(content.getBytes());
- // 关闭文件输出流
- fileOut.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private void read() {
- try {
- ed2.setText("");
- // 打开文件输入流
- FileInputStream fileInput = this.openFileInput("test.txt");
- BufferedReader br = new BufferedReader(new InputStreamReader(
- fileInput));
- String str = null;
- StringBuilder stb = new StringBuilder();
- while ((str = br.readLine()) !=null ) {
- stb.append(str);
- }
- ed2.setText(stb);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- //删除指定的文件
- private void deleteFiles(String fileName) {
- try {
- // 获取data文件中的所有文件列表
- List<String> name = Arrays.asList(this.fileList());
- if (name.contains(fileName)) {
- this.deleteFile(fileName);
- ed3.setText(fileName + ":该文件成功删除!");
- } else
- ed3.setText(fileName + ":该文件输入错误或不存在!");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- }
SDcard数据读写实例
- <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"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- tools:context=".MainActivity" >
- <EditText
- android:id="@+id/ed1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:inputType="textMultiLine"/>
- <Button
- android:id="@+id/write"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="写入SD卡中"/>
- <Button
- android:id="@+id/read"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="读取SD文件"/>
- <TextView
- android:id="@+id/txt1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
- </LinearLayout>
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.xiong.sdcardtest"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="14"
- android:targetSdkVersion="17" />
- <!-- 在SD卡上创建与删除权限 -->
- <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
- <!-- 向SD卡上写入权限 -->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="com.android.xiong.sdcardtest.MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- </manifest>
- package com.android.xiong.sdcardtest;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStreamReader;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Environment;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
- public class MainActivity extends Activity {
- private Button write;
- private Button read;
- private EditText ed1;
- private TextView txt1;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- write = (Button) findViewById(R.id.write);
- read = (Button) findViewById(R.id.read);
- ed1 = (EditText) findViewById(R.id.ed1);
- txt1 = (TextView) findViewById(R.id.txt1);
- write.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- writeSDcard(ed1.getText().toString());
- }
- });
- read.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- txt1.setText(readSDcard());
- }
- });
- }
- // 把数据写入SD卡
- private void writeSDcard(String str) {
- try {
- // 判断是否存在SD卡
- if (Environment.getExternalStorageState().equals(
- Environment.MEDIA_MOUNTED)) {
- // 获取SD卡的目录
- File file = Environment.getExternalStorageDirectory();
- FileOutputStream fileW = new FileOutputStream(file.getCanonicalPath() + "/test.txt");
- fileW.write(str.getBytes());
- fileW.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- // 从SD卡中读取数据
- private String readSDcard() {
- StringBuffer str = new StringBuffer();
- try {
- // 判断是否存在SD
- if (Environment.getExternalStorageState().equals(
- Environment.MEDIA_MOUNTED)) {
- File file = new File(Environment.getExternalStorageDirectory()
- .getCanonicalPath() + "/test.txt");
- // 判断是否存在该文件
- if (file.exists()) {
- // 打开文件输入流
- FileInputStream fileR = new FileInputStream(file);
- BufferedReader reads = new BufferedReader(
- new InputStreamReader(fileR));
- String st = null;
- while ((st =reads.readLine())!=null ) {
- str.append(st);
- }
- fileR.close();
- } else {
- txt1.setText("该目录下文件不存在");
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return str.toString();
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- }
- Android数据存储(2)向机身内存(Internal Storage)和SDcard(External Storage)读写数据实例
- Android数据存储(2)向机身内存(Internal Storage)和SDcard(External Storage)读写数据实例
- Android数据存储(2)向机身内存(Internal Storage)和SDcard(External Storage)读写数据实例
- Android 外部存储external storage和内部存储internal storage
- Android数据存储-Internal Storage
- android 文件存储 Internal storage External storage
- 【Android基础笔记14】Android数据存储——External和Internal Storage
- android Internal storage 和External storage
- Android数据存储--External Storage(外部存储)
- Android Data Storage(数据存储)值External Storage
- Android Data Storage(数据存储)之Internal Storage
- Android数据存储(External Storage,外部存储)
- Android数据存储之External Storage外部存储
- Android 数据存储-------外部存储(SD卡) External Storage
- Android External storage vs internal storage
- Android数据存储--Internal Storage(内部存储)及权限
- Android数据存储之Internal Storage内部存储
- android进阶(三)数据存储之Internal Storage
- Lucene5 学习笔记(1) —— Hello World
- LeetCode:Department Highest Salary
- Callable与Future的介绍
- 巴菲特致股东的一封信:2011年
- 搜索框
- Android数据存储(2)向机身内存(Internal Storage)和SDcard(External Storage)读写数据实例
- Java 线程池(threads pool), Executor 的使用
- 关于字符编码,你所需要知道的
- Android中往手机自带的存储空间写入文件
- UIImageView总结
- UVa10763 - Foreign Exchange
- CPU缓存刷新的误解
- android中将数据写入手机内存和sdcard中的文件
- 使用python中的Matplotlib绘图示例