Android存储(读取)之SD卡

android读取sd卡中MP3文件 立即下载

本文讲解了SD卡存储和读取数据(数据内容仅限为String)

//        把String保存到sd文件中
        StoreUtils.storeStringToSDCard(
        this, 
        "新浪体育讯hah",
        "qwe.txt",
        "aaaq");

//        读取存储在SD卡中的文件
        String data = StoreUtils.readStringFromSDCard(
        new File(Environment.getExternalStorageDirectory() + "/aaaq", 
        "qwe.txt"));
package com.github.c.ceshi;

import android.content.Context;
import android.os.Environment;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;

/**
 * Created by a on 2016/5/15.
 */
public class StoreUtils {

    /**
     * SD卡存储注意事项:
     *1. 声明写sd卡的权限(清单文件)
     *2. 获得sd卡的目录:Environment.getExternalStorageDirectory()
     *3. 判断sd卡的状态.是否存在,是否可以读写:Environment.getExternalStorageState();
     *4. 判断sd卡剩余可用空间:Environment.getExternalStorageDirectory().getFreeSpace();
     */

    /**
     * 把String保存到sd文件中
     * 默认路径为:/mnt/sdcard/
     * 但是不同的手机是不一样的所以要使用:Environment.getExternalStorageDirectory()来获取系统的sdcard目录
     *
     * @param context             上下文
     * @param content             要存储在sd卡中的文本内容
     * @param fileName            存储的文件名
     * @param secondaryStorageDir 存储在sd卡中的二级目录的文件夹名称,如果为null,则存储在sd卡根目录下
     */
    public static void storeStringToSDCard(Context context, String content, String fileName, String secondaryStorageDir) {
        try {
//            获取sd卡的状态(是否挂载,是否可读写)
            String status = Environment.getExternalStorageState();
//            获取sd卡的可用空间
            long usableSpace = Environment.getExternalStorageDirectory().getUsableSpace();
            //判断sd卡的状态是否有,是否可以被读写.
            if (Environment.MEDIA_MOUNTED.equals(status)) {//sd卡已经挂载,可读可写

                if (usableSpace < 1024) {//判断SD剩余空间是否够用
                    Toast.makeText(context, "SD卡可用空间不足", Toast.LENGTH_SHORT).show();
                    return;
                }
                File file;
                if (secondaryStorageDir == null) {
                    file = new File(Environment.getExternalStorageDirectory(), fileName);

                } else {
                    file = new File(Environment.getExternalStorageDirectory() + "/" + secondaryStorageDir, fileName);
                    if (!file.getParentFile().exists()) {
                        file.getParentFile().mkdirs();
                    }
                }
                FileOutputStream fos = new FileOutputStream(file);
                fos.write(content.getBytes());
                fos.close();
                Toast.makeText(context, "存储数据到sd卡成功", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(context, "sd卡不可写,请检查sd卡状态", Toast.LENGTH_SHORT).show();
            }
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(context, "存储数据到sd卡失败", Toast.LENGTH_SHORT).show();
        }
    }


    /**
     * 读取存储在SD卡中的文件
     * 默认路径为:/mnt/sdcard/
     * 但是不同的手机是不一样的所以要使用:Environment.getExternalStorageDirectory()来获取系统的sdcard目录
     *
     * @param file
     * @return 读取结果String
     */
    public static String readStringFromSDCard(File file) {
//            获取sd卡的状态(是否挂载,是否可读写)
        String status = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(status)) {//sd卡已经挂载,可读可写
            try {
                FileInputStream fis = new FileInputStream(file);
                BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                String content = "";
                String tmp;
                while ((tmp = br.readLine()) != null) {
                    content += tmp;
                }
                br.close();
                fis.close();
                return content;
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                return "不存在此文件,请核对文件路径、文件名";
            } catch (Exception e) {
                e.printStackTrace();
                return "文件读取失败";
            }
        } else {
            return "SD卡不可用,请检查sd卡状态";
        }

    }
}

STM32H7+LAN8720A之ETH与LWIP配置问题(End) 开篇介绍 由于项目中需要使用到STM32H7系列的芯片,且该系列无法移植ST的标准库,只能使用ST的HAL库,通过STM32Cube生成HAL库的基本代码。在项目开发中需要使用到STM32板载的ETH口,在简化的四层模型中充当着数据链路层的角色,我们只需添加PHY并配置好IP,即可实现基本的TCP主从机通信、UDP通信等等。 一、激光雷达3i-T1 由于使用了一款只具有网口通信的单线激光雷达,其具有TCP和UDP方式的通信方式,为了避免进行TCP中的socket报文解析和繁琐的通信握手过程,我们首先将雷达配 阅读详情

相关推荐

FPGA时钟架构解密:从SRCC/MRCC到全局时钟树的实战指南

本文深入解析Xilinx 7系列FPGA时钟架构,从SRCC/MRCC引脚特性到全局时钟树设计,详细介绍了BUFG、BUFMR等关键组件的应用场景和优化策略。通过对比SRCC与MRCC的驱动范围及适用场景,提供低抖动时钟布线技巧和时钟域交叉(CDC)设计方法,帮助工程师构建高性能FPGA时钟系统。

weixin_29191081的博客 1484

Android通过连接USB读写SD卡(libaums方案)

最近有一个需求是要求通过Usb扩展读取到SD卡的内容。可以从Usb存储设备拷贝文件到内置卡,也可以从内置卡文件拷贝到Usb存储。

Gary__123456的博客 2166

深度学习的卷积神经网络的煤矸石识别

在本博文中,我们提出了一种基于深度学习的煤矸石检测与识别系统,该系统采用YOLOv8算法对煤矸石进行检测和识别,实现对图片中的煤矸石进行准确识别。1.项目需求对煤矸石进行检测与识别,系统将识别出图片中的克服小块煤矸石漏检的缺陷。 2.项目实现 通过调研,本项目最终使用yolov8模型作为目标检测的模型, YOLOv8 旨在快速、准确且易使用,使其成为广泛的物体检测、图像分割和图像分类任务的极佳选择。 1.数据集:格式为jpg的3091张煤矸石图片2.YOLOv8环境配置yolo检测网络包括24个卷积层

2201_75355700的博客 792

Android 保存/读取本地SD卡文件(兼容Android 13)

Android 保存/读取本地SD卡文件(兼容Android 13)

邵旺运的博客 2万+

为什么传统CNN在视网膜分割中败给Mamba?从血管拓扑学揭秘Serp-Mamba的蛇形扫描黑科技

本文深入分析了传统CNN在视网膜血管分割任务中的局限性,特别是在处理高分辨率图像和复杂血管拓扑结构时。针对这些问题,文章重点介绍了Serp-Mamba模型的核心创新——蛇形交织自适应扫描(SIA)机制,该机制通过让扫描路径自适应地贴合血管曲率,并结合模糊驱动双重校准(ADDR)模块应对极端类别失衡,从而在视网膜血管分割任务上实现了性能的显著突破。

ss78901的博客 894

华为产品安全基线

一、敏感信息安全传输 1、采用HTTPS安全协议传输 2、客户端本地保存的敏感信息,需要先加密再保存使用,不可逆支持PBKDF2(迭代10000次)加密保存,可逆支持AES256+IV保存,密钥支持可更新 二、认证鉴权 1、License中心与分析节点分布式部署,需要做用户名+口令安全认证,支持使用HTTPS安全协议。 2、客户端登录支持防暴力破解,支持验证码,多次连续尝试登陆失败后锁定账...

zileixu的博客 1万+

Android系统信息获取 之一:系统存储信息的获取(RAM,ROM,SDCard)

Android系统信息获取之一:系统存储信息的获取 Android系统的存储设备一般分为RAM,ROM,SDCard三个部分。其中RAM是Random Access Memory的缩写,是随机存储器,在工作状态时可以随机读写数据,断电以后会丢失数据,即我们常说的内存。手机的ROM和传统的ROM(Read Only Memory)又有些不一样,它分为两部分,一部分是用于系统,另外一部分是用作用户存

netwalk的专栏 7620

xhs私信协议分析

之前分析过xhs的shield算法,今天再聊聊xhs的私信,文章仅供学习参考研究交流,如有侵权请联系删帖。经过抓包分析发现私信接口并不是走的http协议,而是socket协议。而要获取socket包则需要使用wireshark软件1、protobuf的包体中的序号7,多次验证后发现文字信息的需要需要固定成12、protobuf的包体中的序号12,多次验证后发现文字信息的需要需要固定成1后续有时间的话,再研究一下视频和图片格式的私信协议,这次就分析到这里吧。

佛系更新... 3486

android 读取SD卡文件

SD卡作为手机的扩展存储设备,在手机中充当硬盘角色,可以让我们手机存放更多的数据以及多媒体等大体积文件。因此查看SD卡的内存就跟我们查看硬盘的剩余空间一样,是我们经常操作的一件事,那么在Android开发中,我们如何能获取SD卡的内存容量呢?   首先,要获取SD卡上面的信息,必须先对SD卡有访问的权限,因此第一件事就是需要添加访问扩展设备的权限。 android:name=

winson_jason的专栏 4380

FFmpeg音频转换避坑实录:为什么VOS的REC转MP3比WAV转MP3体积小一半?

本文深入解析了FFmpeg在VOS系统REC格式音频转换中的优化技巧,揭示了REC转MP3比WAV转MP3体积小一半的原因。通过分析REC格式的压缩特性、转码参数陷阱及FFmpeg调优方法,帮助开发者实现高效音频转换,显著降低存储成本。

weixin_30752699的博客 527

基于Simulink的光伏+储能家庭能源管理系统仿真

本文通过Simulink建模,分析了家庭光伏+储能系统的优化调度问题。针对光伏发电与用电高峰不匹配导致电费节省有限的问题,构建了包含5kW光伏、10kWh电池和6kW负荷的完整模型,设计了无控、规则控制和24小时经济优化三种策略。仿真结果显示,经济优化策略可使日电费降低32%,光伏自用率从45%提升至89%,尤其在晚高峰时段能显著减少高价购电。文章详细介绍了物理层建模、分时电价实现和控制策略设计方法,并探讨了天气预测、V2H等高级扩展功能,为家庭能源智能管理提供了实用解决方案。

xiaoheshang_123的博客 188

Android 读取SD卡中文件以及内存使用情况

android.os下的StatFs类主要用来获取文件系统的状态,能够获取sd卡的大小和剩余空间,例如通过实例化一个StatFs对象 new StatFs(path.getPath())把SD卡根目录路径传进去可以获取SD卡根目录下的内存存储状态。

WX_LYB的博客 4824

基于知识图谱的时空事件关联推理能力培养

随着信息技术的飞速发展,大量的时空事件数据被产生和收集,如交通流量数据、气象观测数据、社交媒体上的地理定位信息等。这些数据蕴含着丰富的知识和规律,但要从中提取有价值的信息并非易事。基于知识图谱的时空事件关联推理旨在通过构建知识图谱,将时空事件数据进行整合和关联,从而实现对事件之间潜在关系的挖掘和推理。本文的目的是系统地介绍基于知识图谱的时空事件关联推理能力的培养方法,包括核心概念、算法原理、数学模型、实际应用等方面。

操作系统内核探秘的博客 750

Android---数据读取、存储、删除(内存储/SD卡存储/网络数据读取存储)

数据读取存储之内存储首先搞清几个概念: 1.数据的存储是以数据流(IO流)的形式进行数据的传递,类似于JAVA中的IO流。 2.存储: openFileOutput 返回一个输出字节流 指向的路径为data/data/包名、files/ 参数1:文件名称(如果不存在则自动创建) 参数2

栀未央的博客 1115

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java 读取sd卡文件系统_Android 文件的保存与读取之SDCard(SD卡)存储

Android钟对数据的存储与访问是很有必要的,在Android中对于数据存储提供了如下几种方法:文件形式SharedPreferences(参数-键值对形式)SQLite数据库(空间2T)Content provider (Android组件-内容提供者)网络(云存储)现在我们主要写的是文件的保存与读取。Android文件储存数据有两个地方:1、Android系统自带的存储空间,2、外部储存设备...

weixin_42603332的博客 509

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【Android 开发】:数据存储之File文件存储 [即SD卡的写入与读取]

1. 文件存储数据 [也就是通常说的SD卡中]  2. 使用SharedPreferences存储数据   3. SQLite数据库存储数据   4. 使用ContentProvider存储数据   5. 网络存储数据 [可以把本地的数据存储在网络的服务端]   在我们都知道Java提供了一套完整的IO流体系包括FileInputStream和FileOutStr

AHuier_Techblog :如果我不在写代码,你就 @me 4915

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

关于Android读取SD卡存储的动态申请

主要关于SD卡存储的权限问题。新手

m0_46497442的博客 2568

Android 文件的保存与读取之SDCard(SD卡)存储

Android钟对数据的存储与访问是很有必要的,在Android中对于数据存储提供了如下几种方法:文件形式 SharedPreferences(参数-键值对形式) SQLite数据库(空间2T) Content provider (Android组件-内容提供者) 网络(云存储) 现在我们主要写的是文件的保存与读取。Android文件储存数据有两个地方:1、Android系统自带的存储空间

FLY346422332的博客 2330

android读取系统存储级SD卡存储空间

android手机上面的存储空间主要有手机本身的存储空间和SD卡的存储空间。之前用的最多的是SD卡的存储空间,在总结的时候看了一下系统的源代码,很有收获。在手机安装应用时,系统会自动在/data/data目录下面以应用的主包名创建一个目录,默认还会在最后的那个目录里面创建一个lib目录。下面看一下系统获取存储空间的代码:   来自android2.3.3系统源代码/packages

mingtingjie的专栏 767

android6 存储卡异常,手机SD卡无法读取时,如何在手机上修复损坏的SD卡?

吴川华南区技术负责人概要手机发生SD卡无法读取的情况时,无法读取的问题是由什么原因而引起的呢?我们又应该如何修复手机受损的SD卡呢?手机SD卡无法读取的常见原因及解决方法SD卡接触不良有时,SD卡无法读取识别,可能是由于SD卡接触不良所导致的。当SD卡的触点或卡槽错位,SD卡芯片有污渍或卡槽有灰尘,均可能导致SD卡接触不良,造成无法检测或识别的问题。当由于接触不良而导致手机SD卡无法识别时,通过对...

weixin_39641463的博客 3663

我的Android之旅(十五)---数据存储---SD卡数据的读取

在对SD卡进行读写的时候会用到的知识点:      Environment类的静态方法:      * getDataDirectory(); 获取android中的data目录;      * getExternalStorgeDirectory(); 获取到外部存储的目录一般指SD卡;      * getDownloadCacheDirectory(); 获取到下载的缓存目录

qianqian的博客 524

android 卸载SD卡后图库读取不到内部存储卡的图片

很简单就可以fix,查看\packages\providers\MediaProvider\src\com\android\providers\media\MediaScannerReceiver.java文件,其中在onReceive方法中scan(context, MediaProvider.EXTERNAL_VOLUME)语句的前面的if判断中添加一个|| action.equals(Int

bmj的专栏 1843

Android文件存储与读取(手机内存、SD卡)

1.activity_main.xml文件中&lt;!-- 保存数据到手机内存中 --&gt; &lt;Button android:id="@+id/btnSave" android:layout_width="wrap_content" android:layout_height="wrap_content" androi...

六月星海的博客 5186

Android实践: Android13 读取外置SD卡

在Android开发中,随着应用功能的日益复杂,处理大量用户数据的需求也随之增加。特别是当这些数据存储在外部SD卡上时,如何高效地读取和写入这些数据成为了开发者们必须面对的问题。本文将深入探讨在Android 13系统中如何读取外置SD卡,通过详细的步骤和代码示例,帮助开发者们实现这一功能。

孔乙己大叔的博客 3431
上一篇: Android Studio SVN 使用方法
下一篇: Android存储(读取)之内存FilesDir存储
Android_Study_OK
博客等级 码龄11年 91粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值