Advertisement

Android读取SD卡路径下文件的方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文介绍了如何在Android系统中从SD卡指定路径下读取文件的具体方法和实现步骤。 代码如下: // 读取sdcard文件 private void sdcardRead() { String fileName = /sdcard/my_sdcard.txt; // assets下文件 //String fileName = “/sdcard/test/my_sdcard_test.txt”;// sdcard下子目录文件 String ret = ; try { FileInputStream fis = new FileInputStream(fileName); int len = fis.available(); byte[] buffer = new byte[len]; fis.read(buffer); // 读取数据到缓冲区 }

全部评论 (0)

还没有任何评论哟~
客服
客服
  • AndroidSD
    优质
    本文介绍了如何在Android系统中从SD卡指定路径下读取文件的具体方法和实现步骤。 代码如下: // 读取sdcard文件 private void sdcardRead() { String fileName = /sdcard/my_sdcard.txt; // assets下文件 //String fileName = “/sdcard/test/my_sdcard_test.txt”;// sdcard下子目录文件 String ret = ; try { FileInputStream fis = new FileInputStream(fileName); int len = fis.available(); byte[] buffer = new byte[len]; fis.read(buffer); // 读取数据到缓冲区 }
  • AndroidSD和内存
    优质
    本文介绍了如何在Android系统中获取SD卡路径以及访问手机内部存储的方法,帮助开发者解决文件存取问题。 在Android开发过程中,获取SD卡路径及查询其内存大小是常见的需求之一,这对于应用程序的数据存储与管理至关重要。本段落将详细介绍如何实现此功能,并介绍相关的类和方法。 首先来看一下获取SD卡路径的两种常见方式: 1. **硬编码路径**: ```java private String folder = sdcard/DCIM/Camera; // 不推荐使用这种方式。 ``` 这种直接写死SD卡路径的方式虽然简单,但并不适用于所有设备。因为不同的Android设备可能会有不同的默认存储位置。 2. **使用Environment类**: ```java public String getSDPath() { File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED); if (sdCardExist) { sdDir = Environment.getExternalStorageDirectory(); } return sdDir.toString(); } ``` 通过`Environment.getExternalStorageDirectory()`方法可以获取到SD卡的根目录,这种方式更为推荐,因为它能确保适应不同设备的存储路径。 接下来我们来详细分析与SD卡操作相关的两个核心类: 1. **Environment类**: `Environment`类提供了访问系统环境变量的方法,特别是关于外部存储(通常指SD卡)的状态和路径。其中,`getExternalStorageState()`方法用于获取SD卡的状态,返回值可以是以下常量之一: - `MEDIA_MOUNTED`: 表示SD卡已挂载并且可读写。 - `MEDIA_MOUNTED_READ_ONLY`: 表示SD卡已挂载但只读。 - `MEDIA_UNMOUNTED`: 表示SD卡已卸载。 - `MEDIA_REMOVED`: 表示SD卡已被物理移除。 - `MEDIA_CHECKING`: SD卡正在进行磁盘检查。 - `MEDIA_NOFS`: 表示SD卡为空或者使用了不支持的文件系统。 - `MEDIA_SHARED`: SD卡通过USB大容量存储共享。 - `MEDIA_UNMOUNTABLE`: 表示SD卡无法挂载。 除此之外,Environment还提供了一些获取特定目录的方法,如: - `getDataDirectory()`: 获取Android数据目录。 - `getDownloadCacheDirectory()`: 获取下载缓存内容目录。 - `getExternalStoragePublicDirectory(String type)`:根据指定的类型(例如`DIRECTORY_PICTURES`)获取公共外部存储目录。 2. **StatFs类**: `StatFs`类用于获取文件系统的统计信息,包括可用空间和总空间。例如,我们可以通过以下方式获取SD卡的剩余空间: ```java StatFs stat = new StatFs(getSDPath()); long blockSize = stat.getBlockSizeLong(); long availableBlocks = stat.getAvailableBlocksLong(); long totalBlocks = stat.getBlockCountLong(); long freeSpaceInBytes = availableBlocks * blockSize; long totalSpaceInBytes = totalBlocks * blockSize; ``` 这里,`blockSize`是每个块的字节数,`availableBlocks`是剩余可用的块数量,而`totalBlocks`则是总的块数量。通过这些信息可以计算出SD卡的实际总存储量和可用空间。 结合以上知识点,我们可以编写一个完整的示例代码来获取并展示SDCard的信息: ```java public class SDCardInfoActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sdcard_info); String sdPath = getSDPath(); if (sdPath != null) { displaySDCardInfo(sdPath); } else { Toast.makeText(this, SD Card not available, Toast.LENGTH_SHORT).show(); } } private String getSDPath() { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { return Environment.getExternalStorageDirectory().getPath(); } return null; } private void displaySDCardInfo(String path) { StatFs stat = new StatFs(path); long blockSize = stat.getBlockSizeLong(); long availableBlocks = stat.getAvailableBlocksLong(); long totalBlocks = stat.getBlockCountLong(); long freeSpaceInBytes = availableBlocks * blockSize; long totalSpaceInBytes = totalBlocks * blockSize; TextView tvFreeSpace = findViewById(R.id.tv_free_space); tvFreeSpace.setText(Free Space: + (freeSpaceInBytes / (1024 * 1024)) + MB); TextView tvTotalSpace = findViewById(R.id.tv_total_space); tvTotalSpace.setText(Total Space: + (totalSpaceInBytes / (1024 * 1024)) + MB); } } ``` 此示例代码将SD卡的总空间和可用空间显示在界面上,方便用户了解存储状态。 总之,Android开发者可以通过`Environment`和`StatFs`类来获取SD卡的路径及内存信息,并确保应用能够正确管理和使用外部存储。实际
  • Android OTG U 盘和 SD
    优质
    本教程详细讲解如何在Android设备中通过OTG获取U盘或SD卡路径的方法与步骤,帮助用户轻松访问外部存储设备。 Android M读取OTG U盘路径和sdcard路径的示例代码可供第三方应用参考使用。摘要为何要限制为50个字呢?
  • AndroidSD和SDCard内存技巧
    优质
    本文介绍了如何在Android系统中获取SD卡路径及查询SD卡剩余存储空间的方法,帮助开发者更好地管理文件与数据。 本段落介绍了在Android开发中如何获取SD卡路径以及检测SDCard内存的方法。 昨天我在处理拍照后照片的存储问题时遇到了挑战。最初我使用了一个固定的字符串来定义存储路径,即 `private String folder = /sdcard/DCIM/Camera/`(这是大多数设备上相机程序默认的照片保存位置)。然而,这种方法虽然通常有效,但并不是最理想的选择,因为不同的设备或应用可能有不同的文件夹结构。 更佳的解决方案是使用Android SDK中的Environment类来动态获取SD卡路径。下面我将详细介绍如何实现这一功能,并提供一个示例代码用于检测和显示SDCard上的可用内存空间给用户查看。以下是主要步骤: 0. 获取sd卡路径。 1. 介绍 Environment 类及其相关方法,这些方法可以帮助开发者更灵活地处理存储问题。 2. 讲解 StatFs 类的使用技巧,通过这个类可以获取到关于文件系统状态的信息,包括总容量和可用空间等。 采用这种方法不仅提高了应用适应不同设备的能力,同时也为用户提供了一个更加直观的方式来了解SDCard的状态。
  • STM32SDFAT32
    优质
    本教程详细介绍了如何使用STM32微控制器读取SD卡中存储的FAT32格式文件的方法和步骤。适合嵌入式开发人员学习参考。 STM32读取SD卡的FAT32文件功能已经使用Keil编译通过,并可以直接使用。附带了SD卡接口规范。
  • Android检查SD写权限
    优质
    本文介绍如何在Android系统中检查应用程序对SD卡的读取和写入权限,帮助用户解决SD卡访问问题。 在Android开发中,检测SD卡读写权限是一个重要的环节,尤其是在Android 6.0及以上版本的设备上更为关键。从这个版本开始引入了运行时(Runtime)权限机制,这意味着开发者需要动态请求用户授予应用所需的特定权限。 对于SD卡读写的操作,在代码层面我们需要申请android.permission.WRITE_EXTERNAL_STORAGE这一权限,这是为了确保应用程序能够执行文件系统的写入和读取功能。在检查该权限是否存在时,可以利用ContextCompat.checkSelfPermission()函数来完成这项任务;如果发现当前App没有获得这个必要的权限,则应通过ActivityCompat.requestPermissions()方法向用户请求获取。 值得注意的是,在不同版本的Android系统中处理SD卡读写权限的方式会有所区别:对于5.0及以下版本,所有存储相关的操作都使用一个统一的权限申请机制;而在6.0及以上版本里,针对外部存储(包括内置和外置)的操作则需要单独进行权限请求。 接下来我们将介绍如何在代码中实现SD卡读写权限的检测。首先定义两个变量allowablePermissionRunnables 和 disallowablePermissionRunnables ,用于存放处理不同情况下的业务逻辑。然后通过调用requestPermission() 方法来发起对WRITE_EXTERNAL_STORAGE 权限的申请,并根据返回的结果执行相应的操作。 在编写具体的代码时,需要向 requestPermission()方法传递三个参数:请求码(requestCode)、权限名(permission)和一个运行对象(runnable),后者用于处理用户响应后的不同情况。比如当用户同意或者拒绝了SD卡读写权限后,我们可以依据实际情况来调整应用程序的行为或提示信息。 最后,在实际应用中还需要关注到Android版本的差异性问题:在6.0及以上系统环境中使用ContextCompat.checkSelfPermission()方法来进行权限检查;而在5.0及以下版本,则可以直接通过PackageManager.PERMISSION_GRANTED常量进行判断。这确保了我们的代码能够在不同的设备上都能正常工作并符合Google Play商店的规定要求。 总之,检测和处理SD卡读写权限是Android开发过程中不可或缺的一部分内容,开发者需要根据目标平台的特性来灵活调整实现策略。
  • Android Studio中不使用SD示例
    优质
    本教程提供了一个在Android Studio开发环境中,无需SD卡即可实现读取本地存储中的文本文件的方法和步骤。 在Android Studio编写了一个简单的文本段落件内容读取例子,并已在手机真机上测试通过。
  • MATLAB批量同一MAT与技巧_rar_MAT_MATLAB_MAT_STRUGGlewru_批量M
    优质
    本文档提供了使用MATLAB批量读取同一目录下的MAT文件的具体方法和技巧,涵盖从基础操作到高级应用的全面指导。适用于需要处理大量数据的研究人员和技术人员。作者:MAT_STRUGGLE。 从同一路径下批量读取MAT文件到Matlab中,以便进行下一步计算。
  • Java 类资源及代码示例
    优质
    本篇文章将详细介绍如何在Java类路径下正确地读取资源文件,并提供具体的代码示例帮助读者理解和应用。 本段落主要介绍了Java读取类路径下资源文件的实现代码及相关资料,并提供了工具类ResourceLoadUtil.java的具体实例供参考。
  • 如何使用Arduino逐行SD-电
    优质
    本教程详细介绍了如何利用Arduino板读取SD卡内存储的文本文件,并以逐行显示的方式进行数据提取。适合电子爱好者和初学者参考学习。 硬件部件: - Arduino UNO × 1个 - DFRobot LCD i2c 20X4 × 1个 - Adafruit MICRO SD卡模块 × 1个 软件应用程序和在线服务: - Arduino IDE 在本教程中,我们将学习如何逐行读取SD卡文本段落件。 电路连接: 将SD卡模块引脚GND连接到Arduino的GND。 将SD卡模块引脚VCC连接到Arduino的5V。 将SD卡模块引脚SCK连接到Arduino数字引脚13。 将SD卡模块引脚MISO连接到Arduino数字引脚12。 将SD卡模块引脚MOSI连接到Arduino数字引脚11。 将SD卡模块引脚CS连接到Arduino数字引脚10。 LCD显示: - 将LCD显示的VCC端口连接至 Arduino 的5V - 将LCD显示的GND端口连接至 Arduino 的GND - 将LCD显示的SCL端口连接至 Arduino 的SCL - 将LCD显示的SDA端口连接至Arduino 的SDA