Android App将数据写入内部存储和外部存储的示例

File存储(内部存储)
一旦程序在设备安装后,data/data/包名/ 即为内部存储空间,对外保密。
Context提供了2个方法来打开输入、输出流

FileInputStream openFileInput(String name) FileOutputStream openFileOutput(String name, int mode) public class MainActivity extends Activity { private TextView show; private EditText et; private String filename = "test"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); show = (TextView) findViewById(R.id.show); et = (EditText) findViewById(R.id.et); findViewById(R.id.write).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE); //FileOutputStream是字节流,如果是写文本的话,需要进一步把FileOutputStream包装 UTF-8是编码 OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); //写 osw.write(et.getText().toString()); osw.flush(); fos.flush(); osw.close(); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); findViewById(R.id.read).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { FileInputStream fis = openFileInput(filename); //当输入输出都指定字符集编码的时候,就不会出现乱码的情况 InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); //获取文件的可用长度,构建一个字符数组 char[] input = new char[fis.available()]; isr.read(input); isr.close(); fis.close(); String readed = new String(input); show.setText(readed); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } }

data/data/packagename/files/test就是我们写入的文件。

SD存储(外部存储)
mnt/sdcard 目录就是SD卡的挂载点(只是一个指向)。
storage/sdcard: 真正的SD卡操作目录。

一、文件下载
Android开发中,有时需要从网上下载一些资源以供用户使用,Android API中已经提供了很多直接可以用的类供大家使用,一般文件下载需要通过三个步骤:
1.创建一个HttpURLConnection对象

// 创建一个URL对象,该对象包含一个IP地址,urlStr指的是网络IP地址 url = new URL(urlStr); // 通过URL对象,来创建一个HttpURLConnection对象 HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

2.获得一个InputStream对象

InputStream input = urlConn.getInputStream();

3.设置访问网络的权限

//在AndroidManifest.xml配置文件中加入权限信息 <uses-permission android:name="android.permission.INTERNET"/>

二、访问并写入SD卡
1.判断手机上是否插入SD卡,且应用程序具有读写权限

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);

2.得到当前SD卡的目录

Environment.getExternalStorageDirectory();

3.在访问SD卡前还必须在配置文件中设置权限,这样才可以最SD卡进行存取操作

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

以下是一个对SD操作经常用到的封装类,以后如果需要对SD卡操作,直接可以拿过来用

public class FileUtils { private String SDPATH; public String getSDPATH(){ return SDPATH; } //构造函数,得到SD卡的目录,这行函数得到的目录名其实是叫"/SDCARD" public FileUtils() { SDPATH = Environment.getExternalStorageDirectory() +"/"; } //在SD卡上创建文件 public File createSDFile(String fileName) throws IOException{ File file = new File(SDPATH + fileName); file.createNewFile(); return file; } //在SD卡上创建目录 public File createSDDir(String dirName){ File dir = new File(SDPATH + dirName); dir.mkdir(); return dir; } //判断SD卡上的文件夹是否存在 public boolean isFileExist(String fileName){ File file = new File(SDPATH + fileName); return file.exists(); } //将一个InputStream里面的数据写入到SD卡中 //将input写到path这个目录中的fileName文件上 public File write2SDFromInput(String path, String fileName, InputStream input){ File file = null; OutputStream output = null; try{ createSDDir(path); file = createSDFile(path + fileName); //FileInputStream是读取数据,FileOutputStream是写入数据,写入到file这个文件上去 output = new FileOutputStream(file); byte buffer [] = new byte[4 * 1024]; while((input.read(buffer)) != -1){ output.write(buffer); } output.flush(); } catch(Exception e){ e.printStackTrace(); } finally{ try{ output.close(); } catch(Exception e){ e.printStackTrace(); } } return file; } }

时间: 2024-11-08 23:51:08

Android App将数据写入内部存储和外部存储的示例的相关文章

Android App将数据写入内部存储和外部存储的示例_Android

File存储(内部存储)一旦程序在设备安装后,data/data/包名/ 即为内部存储空间,对外保密. Context提供了2个方法来打开输入.输出流 FileInputStream openFileInput(String name) FileOutputStream openFileOutput(String name, int mode) public class MainActivity extends Activity { private TextView show; private

Android开发入门(十八)文件 18.2保存到外部存储设备(SD卡)

上一节介绍了如何把文件存储到内部设备.有的时候,需要把文件存储到外部存储设备,比如SD卡.因为 SD卡具有更大的存储空间,同时也可以很容易的和其他用户分享这些文件. 使用上一节的例子,把用 户输入的文字保存在SD卡,修改onClick()事件.如下: public class FilesActivity extends Activity { EditText textBox; static final int READ_BLOCK_SIZE = 100; /** Called when the

android数据存储之文件存储方法_Android

文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的. 概述 文件存取的核心就是输入流和输出流. Android文件的操作模式 文件的相关操作方法 文件读写的实现 openFileOutput和openFileInput方法 /** * openFIleOutput ,openFileInput * 这两种方法同sp一样只能讲文件保存到手机内存固定的路径中, * 默认为 /data/data/<packageName

android数据存储之文件存储方法

文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的. 概述 文件存取的核心就是输入流和输出流. Android文件的操作模式 文件的相关操作方法 文件读写的实现 openFileOutput和openFileInput方法 /** * openFIleOutput ,openFileInput * 这两种方法同sp一样只能讲文件保存到手机内存固定的路径中, * 默认为 /data/data/<packageName

【ANDROID游戏开发十三】(保存游戏数据 [下文])详解SQLITE存储方式,并把SQLITE的数据库文件存储在SD卡中!!!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/329.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读:

Android App中各种数据保存方式的使用实例总结_Android

少量数据保存之SharedPreferences接口实例SharedPreferences数据保存主要是通过键值的方式存储在xml文件中 xml文件在data/此程序的包名/XX.xml. 格式: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <int name="count" value="3" /> <string name="ti

表格存储:使用TableStoreWriter进行高并发、高吞吐的数据写入

概述     表格存储(原OTS)的一大特性是能够支撑海量数据的高并发.高吞吐率的写入,特别适合日志数据或物联网场景(例如轨迹追踪或溯源)数据的写入和存储.这些场景的特性是,会在短时间内产生大量的数据需要消化并写入数据库,需要数据库能够提供高并发.高吞吐率的写入性能,需要满足每秒上万行甚至上百万行的写入吞吐率.针对这些场景,我们在存储层做了很多的优化(本篇文章不赘述),同时在SDK接口层也做了一些优化,专门提供了一个简单易用.高性能的数据导入接口.     TableStoreWriter是基于

【万里征程——Windows App开发】文件&amp;amp;数据——写入与读取

在前面 [万里征程--Windows App开发]文件&数据--读取文件/文件夹名我们简单得获取了文件名和文件夹名,很明显没有太大的意思对吧,这里就来写真正的文件.而在 [万里征程--Windows App开发]文件&数据--文件选取器中,已经能够通过文件选取器保存和打开文件了,这里是对保存和读取文件的一些补充. 准备工作 在XAML中添加一个TextBlock用于显示相关信息,添加一个Button来使用它的Click事件,当然了,最后分别创建2个. 创建文件和读取文件 1.实例化Stor

Android开发之数据的存储方式详解_Android

在Android中,数据的存储分为两种方式: 1.直接以文件的形式存储在目录中 2.以json格式存储在数据库中 将数据以文件的存储又分为两种方式: 1.生成.txt文件 2.生成xml文件 那么今天就来详细的说一下以文件的形式存储,由于没有讲到数据库,在之后的课程中会讲到json格式存储在数据库中. 一.生成.txt文件 文件的生成无非就是我们Java中学习的输入输出流中的一部分,有Java基础相信都是很容易理解的,因为它真的很简单啦~~ 1.生成目录可以分为两种: 1)本机 2)SD卡 2.