Android——数据存储:手机外部存储 SD卡存储

xml

 <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et_5"
        android:hint="要存储的的内容"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et_6"
        android:hint="从文件中读取的内容"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="保存到带包名的目录"
            android:layout_weight="1"
            android:onClick="onclick7"/>
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="从带包名的目录中获取"
            android:layout_weight="1"
            android:onClick="onclick8"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="保存到自定义的目录"
            android:layout_weight="1"
            android:onClick="onclick9"/>
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="从自定义的目录中获取"
            android:layout_weight="1"
            android:onClick="onclick10"/>
    </LinearLayout>

java

   //向外部空间存储文件 保存到带包名的目录
    public void onclick7(View view)
    {
        //
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
        {
            //1.获取要存储的内容
            String content = et_5.getText().toString();

            //2.获取外部存储带包名的目录 ——只到根目录
           // String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath();
            //Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show();

            //参数 代表不同文件类型的子目录 如果没有就传null 获取到根目录下的带包名的目录
            String sdpath = getExternalFilesDir(null).getAbsolutePath();
            Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show();

            //3.构造输出流
            sdpath += "/" +FILENAME;

            try {
                FileOutputStream fos = new FileOutputStream(sdpath,true);

                //传统方式  字节数组方式
                fos.write(content.getBytes("utf-8"));

                fos.close();

                Toast.makeText(Activitydata.this, "保存成功", Toast.LENGTH_SHORT).show();

            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(Activitydata.this, "保存失败", Toast.LENGTH_SHORT).show();
            }
        }
        else
        {
            Toast.makeText(Activitydata.this, "sd卡没有挂载", Toast.LENGTH_SHORT).show();
        }

    }

    //从外部存储空间中读取带包名文件
    //判断是否挂载
    public void onclick8(View view)
    {
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
        {
            //1.获取要存储的内容
            //String content = et_5.getText().toString();

            //2.获取外部存储带包名的目录 ——只到根目录
            // String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath();
            //Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show();

            //参数 代表不同文件类型的子目录 如果没有就传null 获取到根目录下的带包名的目录
            String sdpath = getExternalFilesDir(null).getAbsolutePath();
           // Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show();

            //3.构造输入流
            sdpath += "/" +FILENAME;

            try {
                FileInputStream fis = new FileInputStream(sdpath);

                byte[] b = new byte[1024];

                int i = 0;

                StringBuilder sbr = new StringBuilder();

                while ((i = fis.read(b))>0)
                {
                    sbr.append(new String(b,0,i));
                    et_6.setText(sbr);
                }
                fis.close();

                Toast.makeText(Activitydata.this, "获取成功", Toast.LENGTH_SHORT).show();

            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(Activitydata.this, "获取失败", Toast.LENGTH_SHORT).show();
            }
        }
        else
        {
            Toast.makeText(Activitydata.this, "sd卡没有挂载", Toast.LENGTH_SHORT).show();
        }
    }

    //保存文件到自定义目录
    public void onclick9(View view)
    {

        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            //1.获取要存储的内容
            String content = et_5.getText().toString();

            //2.获取外部存储的根目录
            String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath();

            //在sd卡的根目录下创建子目录
            sdpath += "/hanqi";

            //实例化File,指向一个目录
            File file = new File(sdpath);

            //如果不存在创建一个
            if (!file.exists()) {
                //创建目录
                file.mkdirs();
            }
                Toast.makeText(Activitydata.this, "path= " + sdpath, Toast.LENGTH_SHORT).show();

                //3.创建输出流
                sdpath += "/" + FILENAME;

                try {
                    FileOutputStream fos = new FileOutputStream(sdpath, true);

                    //传统方式  字节数组方式
                    fos.write(content.getBytes("utf-8"));

                    fos.close();

                    Toast.makeText(Activitydata.this, "保存成功", Toast.LENGTH_SHORT).show();

                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(Activitydata.this, "保存失败", Toast.LENGTH_SHORT).show();
                }
            }

        else
        {
            Toast.makeText(Activitydata.this, "sd卡没有挂载", Toast.LENGTH_SHORT).show();
        }

    }

    public void onclick10(View view){

        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
        {
            //1.获取要存储的内容
            //String content = et_5.getText().toString();

            //2.获取外部存储带包名的目录 ——只到根目录
            String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath();
            //Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show();

            //参数 代表不同文件类型的子目录 如果没有就传null 获取到根目录下的带包名的目录
            //String sdpath = getExternalFilesDir(null).getAbsolutePath();
            // Toast.makeText(Activitydata.this, "sdpath= "+sdpath, Toast.LENGTH_LONG).show();

            //3.构造输入流
            sdpath += "/hanqi/" +FILENAME;

            Toast.makeText(Activitydata.this, ""+sdpath, Toast.LENGTH_SHORT).show();

            try {
                FileInputStream fis = new FileInputStream(sdpath);

                byte[] b = new byte[1024];

                int i = 0;

                StringBuilder sbr = new StringBuilder();

                while ((i = fis.read(b))>0)
                {
                    sbr.append(new String(b,0,i));
                    et_6.setText(sbr);
                }
                fis.close();

                Toast.makeText(Activitydata.this, "获取成功", Toast.LENGTH_SHORT).show();

            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(Activitydata.this, "获取失败", Toast.LENGTH_SHORT).show();
            }
        }
        else
        {
            Toast.makeText(Activitydata.this, "sd卡没有挂载", Toast.LENGTH_SHORT).show();
        }

    }

时间: 2024-08-01 14:16:50

Android——数据存储:手机外部存储 SD卡存储的相关文章

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

一.特点 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

Android学习笔记-获取手机内存,SD卡存储空间。

前面介绍到如何保存数据到手机内存或者SD卡,但是问题是,在保存以前,我们还需要对他们的空间(可用空间),进行判断,才可以进行后续操作,所以,本节我们就介绍如何获取手机内存以及Sd卡的空间. //这时获取手机内存的 // File path = Environment.getDataDirectory(); //这时获取SD卡的空间 File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(pat

Android 存储(本地存储 SD卡存储 SharedPreference SQLite ContentProvider)

本文出自:http://blog.csdn.net/dt235201314/article/details/73176149 源码下载欢迎Star(updating):https://github.com/JinBoy23520/CoderToDeveloperByTCLer 一丶慨述 本周的学习内容是Android存储,要求:数据库Sqlite相关操作,常用的文件存取方式,以及实用场景学习,主要学习Sqlite,SD卡文件操作,SharedPreference 二丶效果演示:         

Ubuntu Mate:扩展存储到整张SD卡

树莓派刚刚安装完 ubuntu mate 系统, 打开主文件夹后 发现空间不够用这是没有扩展存储到整张sd卡,但 ubuntu mate中 raspi-config 命令还不能用. 这里就有方法 输入 sudo fdisk /dev/mmcblk0 后,输入d 2 n p 2(键盘上的键)再按两次 回车(Enter)之后按w退出,并重启再打开终端输入sudo resize2fs /dev/mmcblk0p2重启文件系统就扩展了

Android 使用Log4j把日志写入SD卡,动态修改输出文件名称

一.Log4j简单使用 1. 下载log4j.jar http://logging.apache.org/log4j/2.x/ 2. 创建Java代码 public class Loggers { public static Logger logger = Logger. getLogger(Loggers. class); public static void init() { try { PatternLayout patternLayout = new PatternLayout(); p

Android—将Bitmap图片保存到SD卡目录下或者指定目录

直接上代码就不废话啦 一:保存到SD卡下 [java] view plain copy File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg"); try { out = new FileOutputStream(file); btImage.compress(Bitmap.CompressFormat.JPEG, 90, out); System

手机外部文件存储(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;

Android——FileOutputStream与openFileOutput()的区别分析【第一个用于文件存储,第二个用于SD卡存储】【转】

本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. public void save() { try { FileOutputStream outStream=this.openFileO

Android开发之sd卡存储和机身存储的路径获取

来源:https://blog.csdn.net/anjingshuai/article/details/84682779 开发过程中碰到将文件存储到手机中时,要先判断是否有sd卡,如下所示 // 判断是否有SD卡   private static boolean ExistSDCard() {   if (android.os.Environment.getExternalStorageState().equals(   android.os.Environment.MEDIA_MOUNTED