数据存储——手机外部文件存储

一.特点

1.把文件存储在手机外部存储空间(SD卡)里

2.存储的是任意类型的文件

3.使用IO输入输出流操作文件

4.文件路径

1-SD卡根目录/Android/data/包名/files/[ 文件类型],应用卸载后,数据同时被删除;

2-SD卡根目录/,应用卸载之后,数据不会被同时删除。

5.需要声明权限

1-android.permission.WRITE_EXTERNAL_STORAGE,写入文件;

2-MOUNT_UNMOUNT_FILESYSTEMS,创建和删除文件。

二.API

1.Environment

1-SD卡的工具类

2-getExternalStorageState()  得到SD卡的状态,Environment.MEDIA_MOUNTED  挂载状态。

3-getExternalStorageDirectory( )  得到SD卡的根目录File实例

2.context.getExternalFilesDir(type)   得到带包名的外部存储路径

type  文件类型目录:

1-null  表示不创建类型子目录

2-会根据类型创建相应的子目录

手机外部内存存储代码展示:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.hanqi.testapp3.MainActivity"
11     android:orientation="vertical">
12
13     <EditText
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:hint="输入..."
17         android:id="@+id/et_1"/>
18
19     <Button
20         android:layout_width="match_parent"
21         android:layout_height="wrap_content"
22         android:text="写入外部存储文件"
23         android:onClick="bt6_OnClick"/>
24
25     <Button
26         android:layout_width="match_parent"
27         android:layout_height="wrap_content"
28         android:text="读取外部存储文件"
29         android:onClick="bt7_OnClick"/>
30
31
32 </LinearLayout>

手机外部存储

  1 package com.hanqi.testapp3;
  2
  3 import android.content.SharedPreferences;
  4 import android.content.res.AssetManager;
  5 import android.graphics.Bitmap;
  6 import android.graphics.BitmapFactory;
  7 import android.os.Environment;
  8 import android.support.v7.app.AppCompatActivity;
  9 import android.os.Bundle;
 10 import android.text.BidiFormatter;
 11 import android.view.View;
 12 import android.widget.EditText;
 13 import android.widget.ImageView;
 14 import android.widget.TextView;
 15 import android.widget.Toast;
 16
 17 import java.io.File;
 18 import java.io.FileInputStream;
 19 import java.io.FileOutputStream;
 20 import java.io.InputStream;
 21 import java.io.PrintStream;
 22
 23
 24 public class MainActivity extends AppCompatActivity {
 25
 26     TextView tv_1;
 27     EditText et_1;
 28     ImageView iv_1;
 29
 30     @Override
 31     protected void onCreate(Bundle savedInstanceState) {
 32         super.onCreate(savedInstanceState);
 33         setContentView(R.layout.activity_main);
 34
 35         et_1=(EditText)findViewById(R.id.et_1);
 36
 37     }
 38
 39
 40     //写入外部存储文件
 41     public  void bt6_OnClick(View v)
 42     {
 43         //1.判断SD卡是否挂载
 44
 45         if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
 46         {
 47             //文本框内容
 48             String str=et_1.getText().toString();
 49
 50             try {
 51                 //写入
 52                 //1.构造输出流
 53                 //1)得到文件路径
 54
 55                 //得到SD卡根目录
 56                 //String path=Environment.getExternalStorageDirectory().getCanonicalPath();
 57
 58                 //得到包名对应的目录
 59                 String path=getExternalFilesDir("Music").getAbsolutePath();
 60
 61                 Toast.makeText(MainActivity.this, "path="+path, Toast.LENGTH_LONG).show();
 62                 //2)构造
 63                 FileOutputStream fos = new FileOutputStream(path+"/test.txt");
 64
 65                 PrintStream ps=new PrintStream(fos);
 66
 67                 ps.print(str);
 68
 69                 ps.close();
 70                 fos.close();
 71
 72                 Toast.makeText(MainActivity.this, "写入外部文件成功", Toast.LENGTH_SHORT).show();
 73             }
 74             catch (Exception e)
 75             {
 76                 e.printStackTrace();
 77                 Toast.makeText(MainActivity.this, "存储文件出错", Toast.LENGTH_SHORT).show();
 78             }
 79         }
 80         else
 81         {
 82             Toast.makeText(MainActivity.this, "SD卡没有挂载", Toast.LENGTH_SHORT).show();
 83         }
 84     }
 85
 86     public void bt7_OnClick(View v)
 87     {
 88         //1.判断SD卡是否挂载
 89
 90         if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
 91         {
 92             try {
 93
 94                 String path = getExternalFilesDir("Music").getCanonicalPath() + "/test.txt";
 95
 96                 FileInputStream fis=new FileInputStream(path);
 97
 98                 byte [] b=new byte[1024];
 99                 int i=0;
100
101                 String str="";
102
103                 while ((i=fis.read(b))>0)
104                 {
105                     str+=new String(b,0,i);
106                 }
107
108                 fis.close();
109
110                 Toast.makeText(MainActivity.this, "文件内容="+str, Toast.LENGTH_SHORT).show();
111             }
112             catch (Exception e)
113             {
114
115                 Toast.makeText(MainActivity.this, "读取外部文件失败", Toast.LENGTH_SHORT).show();
116             }
117         }
118         else
119         {
120             Toast.makeText(MainActivity.this, "SD卡没有挂载", Toast.LENGTH_SHORT).show();
121         }
122     }
123 }

手机外部存储.java

时间: 2024-12-14 18:55:18

数据存储——手机外部文件存储的相关文章

手机外部文件存储(SD卡存储)

package com.atguigu.l04_datastorage; import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException; import android.app.Activity;

数据存储——手机内部文件存储

一.特点 1.存储的是任意类型的文件 2.使用IO输入输出流操作文件 3.存放的目录:/data/data/包名/files/ 4.可以设置不被其他应用操作 5.应用卸载之后,数据同时被删除 二.API 1.FileOutputStream  文件输出流 1-openFileOutput(文件名,操作模式) mode  操作模式 1>MODE_PRIVATE,不能被别的应用访问,覆盖模式 2>MODE_APPEND,不能被别的应用访问,追加模式 2-close( )关闭输出流 2.PrintS

Android——数据存储(课堂代码整理:SharedPreferences存储和手机内部文件存储)

layout文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="ma

[安卓基础] 012.存储数据(下)——文件存储

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; text-decoration: none; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: poin

4、Android-数据存储方案(文件存储/SharedPreferences)

简介: 任何一个应用程序都需要和数据进行交互 对于软件来说微博.QQ等都需要关系的是数据 没有数据的应用程序是一个没有灵魂的软件 而且还没有实际的用途 可以认为是单机 4.1.持久化技术的简介 数据持久化是指将那些内存中的瞬时数据保存到存储设备中 保证手机或者电脑关机的情况下,这些数据不会丢失 保存在内存中的数据是处于瞬时状态的 保证再存储设备中的是处于持久状态的 持久化技术则提供了一种机制可以让数据再瞬时状态和持久化状态之间进行转换 持久化技术被广泛应用于各种程序设计的领域当中 Android

【Android】14.2 外部文件存储和读取

分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 1.基本概念 内部存储的私有可用存储空间一般都不会很大,对于容量比较大的文件,例如视频等,应该将其存储在外部存储设备(SD卡)上. 注意,不要将手机内存和手机内插入的存储卡(手机卡.SD卡)混淆在一起,内存是不能持久存储的,一关机所有信息就全部丢失了,而内部存储(移动经销商卖的手机卡,容量小,但是没有它打不了电话).外部存储(SD卡,容量大,各种文件都能保存)都是可以持久存储的设备,因此才叫文件存储. 可以通过

数据类操作之文件存储跟读写

(一)概述 本节给大家介绍的是Android数据存储与 访问方式中的一个--文件存储与读写,当然除了这种方式外,我们可以存到SharedPreference,数据库, 或者Application中: (二)文件存储跟读写 1.Android文件的操作模式 学过Java的同学都知道,我们新建文件,然后就可以写入数据了,但是Android却不一样,因为Android是 基于Linux的,我们在读写文件的时候,还需加上文件的操作模式,Android中的操作模式如下: 2.文件的相关操作方法 3.文件读

IOS开发--数据持久化篇之文件存储(一)

前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不胜感激. 什么叫数据持久化: 在这里我就不照搬教科书上抽象的概念了.我觉得既然要把东西写出来就让它简单明了. 要搞清楚数据持久化,首先要知道数据持久化是相对于缓存而言的,缓存是在程序运行的过程中保存在内存中,程序一旦运行结束,其内存就会被释放.缓存在内存中的数据也就随之消失. 那么数据持久化就是要解

SDS趋势之二:对象存储将替代文件存储

首先什么是对象存储? 对象存储(Object Storage)是综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠性.跨平台性以及安全的数据共享的存储体系结构. 典型应用:网盘.云存储. 上篇文章也讲到了随着科技的发展和网络技术的进步,计算机存储空间显得愈加紧张,大规模的数据增长对存储提出了新的挑战. 大家都说IDC预测,全球的数据量正面临一个爆炸性增长,到2020年即将达到44ZB.我觉得这44ZB里面有至少一半数据来自于非结构化数据,为什么这么说呢