千家信息网

Android在代码中如何使用SD卡

发表于:2024-10-27 作者:千家信息网编辑
千家信息网最后更新 2024年10月27日,本篇文章给大家分享的是有关Android在代码中如何使用SD卡,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1 SD 是否可用检查有两种
千家信息网最后更新 2024年10月27日Android在代码中如何使用SD卡

本篇文章给大家分享的是有关Android在代码中如何使用SD卡,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1 SD 是否可用检查

有两种方式,一种是写一个监听函数,用来监听

private final BroadcastReceiver broadcastRec = new BroadcastReceiver() {  @Override  public void onReceive(Context context, Intent intent) {  if (intent.getAction().equals("android.intent.action.MEDIA_MOUNTED")) { //SD 卡已经成功挂载  //有SD 卡  } else if (intent.getAction().equals("android.intent.action.MEDIA_REMOVED")  ||  intent.getAction().equals("android.intent.action.ACTION_MEDIA_UNMOUNTED")  ||  intent.getAction().equals("android.intent.action.ACTION_MEDIA_BAD_REMOVAL")) {//各种未挂载状态  //无SD 卡     }   }  };

另一种在我看来,更简单一些:

File f = new File("/sdcard/");  f.exists();

2 卡上数据的读写

在动手之前,我们先来看看,要对SD 卡进行读写操作,Android 为我们准备了哪些类/接口。

接口:FileFilter

:File、FileInputStream、FileOutputStream

下面我们依次对上面出场的做个简单的介绍吧,同时,也会给出若干代码来说明各个类如何使用

3 File

文件系统的一个抽象描述类,可以使用相对路径和绝对路径,该类提供了若干方法查询/修改文件信息

File file = new File("/sdcard/a.txt");

判断文件是否存在:

file.exists()

"文件"是目录还是文件

file.isDirectory()

如果文件为目录,如何列出子目录呢?

File[ ] filefiles = file.listFiles();

对于文件,如果获得文件的一些信息

file.length(); //文件的长度  file.canRead(); //文件可以读吗  file.canWrite(); //文件可以写吗  file.delete(); //删除该文件

下面,给出一些片断代码来展示如何使用File 类

//创建一个新文件  File file = new File("/sdcard/a.txt");  if (!file.exists()) {  try {  file.createNewFile();  } catch (IOException e) {  e.printStackTrace();  } }  //创建一个新文件夹  File file = new File("/sdcard/a/b/c");  if (!file.exists()) {  try {  file.mkdirs();  }

请注意,mkdirs()和mkdir()的用法,mkdirs()表示,如果需要,会先创建上层目录,如上述代码中,如果SD 卡根目录不存在目录a,那么,使用mkdir()会抛出异常。

4 FileFilter

我们知道,listFiles()会列出当前目录下的文件,但是,另一个问题出来了,如果当前目录下文件杂乱无部分,而我们又不想列出所有文件,怎么办?FileFilter 提供了一个解决方法。我们只需要实现public abstract boolean accept(File pathname)接口就可以了。

FileFilter filter = new FileFilter() {  public boolean accept (File file) {  if (file.isFile() && file.getAbsolutePath().toLowerCase().endsWith(".txt")) {  return true;  }  return false;  }  };  File[] filefiles = file.listFiles(filter);

以上代码展示了如何只列出当前目录下的TXT 文件。

5 FileInputStream

我们不仅需要对文件进行操作,还需要对文件的内容进行操作,这时候,FileInputStream 就登场了

FileInputStream 继承自InputStream,但是FileInputStream 使用了缓冲,以提高频繁读入数据时的性能。

使用FileInputStream 也很简单

FileInputStream fis = new FileInputStream("/sdcard/a.txt");  byte[ ] abytes = new byte[1024]  int len = fis.read(abytes);

在上述代码中,我们打开了SD 卡根目录下的a.txt 文件,同时,读入1K 的数据,需要注意的是,read 并不能保
证一定读入期望长度的数据,我们需要对读入数据的长度进行检查。

6 FileOutputStream

FileOutputStream 与OutputStream 的用法差不多,在些也不多说,给出一个代码吧:  FileOutputStream fos = new FileOutputStream("/sdcard/a.txt");  fos.write("Hello World!".getBytes());  fos.flush();

上述代码会向a.txt 中写入Hello World 字符,请注意,FileOutputStream 也使用了缓冲,因此,数据不会立即写入文件中,当系统认为需要写回数据的时候,真正的写回才发生,因此,如果为了让数据立即写回,需要使用flush()方法。

也许你会问到,我不想把文件原有的内容抹到,怎么?这个也简单,

FileOutputStream fos = new FileOutputStream("/sdcard/a.txt", true);

true 表示向文件后面追加数据

以上就是Android在代码中如何使用SD卡,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

文件 代码 数据 目录 接口 方法 长度 信息 内容 同时 更多 知识 篇文章 系统 路径 部分 卡根 检查 监听 缓冲 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全设备报废手续 数据中心传统网络技术演进难题 计算软件开发合同 网络安全法 学习 要点 软件开发云架构的优缺点 游戏服务器角色属性管理 网络安全攻防用什么电脑 非洲疾控中心信息系统软件开发 网络安全图标手绘板 易语言组合框与数据库连接 漯河市网络安全倡议书范文 广州邮源网络技术有限公司 服务器系统的设备管理器在哪里 广州诺特软件开发 崇明区提供软件开发报价方案 台州软件开发方向 通过手机远程访问数据库 安卓系统软件开发任职要求 行业软件开发收费明细 扩DB2数据库字段长度 py链接数据库后的格式 光与夜之恋的服务器在哪里 公司网络安全用什么软件 服务器故障代码Er201 跟软件开发人员沟通 湖北天天乐学免费服务器 雅之网络技术有限公司 贵州建站互联网科技有限公司 app软件开发语言框架 数据库结构是什么样的
0