android开发实现文件读写
作者:jChenys 发布时间:2022-08-03 09:46:18
标签:android,文件读写
本文实例为大家分享了android实现文件读写的具体代码,供大家参考,具体内容如下
读取
/**
* 文件读取
* @param is 文件的输入流
* @return 返回文件数组
*/
private byte[] read(InputStream is) {
//缓冲区inputStream
BufferedInputStream bis = null;
//用于存储数据
ByteArrayOutputStream baos = null;
try {
//每次读1024
byte[] b = new byte[1024];
//初始化
bis = new BufferedInputStream(is);
baos = new ByteArrayOutputStream();
int length;
while ((length = bis.read(b)) != -1) {
//bis.read()会将读到的数据添加到b数组
//将数组写入到baos中
baos.write(b, 0, length);
}
return baos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
} finally {//关闭流
try {
if (bis != null) {
bis.close();
}
if (is != null) {
is.close();
}
if (baos != null) baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
写入
/**
* 将数据写入文件中
* @param buffer 写入数据
* @param fos 文件输出流
*/
private void write(byte[] buffer, FileOutputStream fos) {
//缓冲区OutputStream
BufferedOutputStream bos = null;
try {
//初始化
bos = new BufferedOutputStream(fos);
//写入
bos.write(buffer);
//刷新缓冲区
bos.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {//关闭流
try {
if (bos != null) {
bos.close();
}
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用
//获取文件输入流
InputStream mRaw = getResources().openRawResource(R.raw.core);
//读取文件
byte[] bytes = read(mRaw);
//创建文件(getFilesDir()路径在data/data/<包名>/files,需要root才能看到路径)
File file = new File(getFilesDir(), "hui.mp3");
boolean newFile = file.createNewFile();
//写入
if (bytes != null) {
FileOutputStream fos = openFileOutput("hui.mp3", Context.MODE_PRIVATE);
write(bytes, fos);
}
该步骤为耗时操作,最好在io线程执行
来源:https://blog.csdn.net/qq313629058/article/details/107582488


猜你喜欢
- Java中的main函数的详细介绍JAVA中的主函数是我们再熟悉不过的了,相信每个学习过JAVA语言的人都能够熟练地写出这个程序的入口函数,
- 什么是栈和队列栈如果用数组模拟的话是类似于一个U形桶状堆栈空间,地下是封口的,只能从顶部一个地方进出,它的进出都是有顺序的,看下图:如果是进
- 本文实例讲述了C#简单实现SNMP的方法。分享给大家供大家参考。具体如下:/**C# Network Programming by Rich
- 原生Toast样式自定义Toast样式创建样式所谓自定义一个Toast就是建立一个布局文件,然后使用一个view容器承载,然后显示出来。To
- 使用HttpServletRequest可以防止盗链行为,什么是盗链行为,比如说在一个别的网站上超链接,指向我们的网页中的某个数据,这样从他
- TypeScript简介:TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语
- 1. 前言在Java开发中接触的开发者大多数不太注重对接口的测试,结果在联调对接中出现各种问题。也有的使用Postman等工具进行测试,虽然
- 一个比较常见的改进用户体验的方案是用Redo/Undo来取代确认对话框,由于这个功能比较常用,本文简单的给了一个在C#中通过Command模
- 一般情况下,Redis Client端发出一个请求后,通常会阻塞并等待Redis服务端处理,Redis服务端处理完后请求命令后会将结果通过响
- 为什么不用SQLite? 原因多种:除了面向对象和关系数据库之间的阻抗不匹配时,SQLite可能是矫枉过正(带来了更多的开销)对于一些简单的
- Java synchronized 关键字 可以将一个代码块或一个方法标记为同步代码块。同步代码块是指同一时间只能有一个线程执行的代码,并且
- HTTPclient保持长连接首先解释一下什么是长连接当我们向一台服务器发起请求时,我们需要和对方建立一条通道,去传输数据,所谓的短连接,就
- 本文以Java程序代码为例展示如何通过格式转换的方式将PPT幻灯片文档转为HTML文件。这里的PPT幻灯片可以是.ppt/.pptx/.pp
- 近期公司要做报表功能,在网上搜索下表格的样式后便自己写了一个自定义的表格控件,该表格控件能根据设置的数据中数据的最大值自动设置左侧信息栏显示
- 会话是识别用户,跟踪用户访问行为的一个手段,通过cookie(存在客户端)或session(存在服务端)来判断本次请求是那个客户端发送过来;
- 什么是WebSocket?WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信—
- maven thin jar 步骤spring-boot-maven-plugin configuration &
- 这篇文章主要介绍了Java如何把int类型转换成byte,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 什么是HystrixHystrix是Netflix针对微服务分布式系统的熔断保护中间件,当我们的客户端连接远程的微服务时,有两种情况需要考虑
- 开发前准备1、密钥工具在线工具地址:https://miniu.alipay.com/keytool/create无需下载,直接在线生成你的