Java Android 二进制文件读写
https://blog.csdn.net/u012734708/article/details/88354539
1.读取android工程中本地二进制文件
Android studio工程目录中有二进制文件abcd.raw 。
二进制文件所放目录 app/src/main/assets/abcd.raw
1.1一次性读取二进制文件
private byte[] readLocalFile() throws IOException {
String fileName = "abcd.raw";
InputStream inputStream = getAssets().open(fileName);
byte[] data = toByteArray(inputStream);
inputStream.close();
return data;
}
private byte[] toByteArray(InputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 4];
int n = 0;
while ((n = in.read(buffer)) != -1) {
out.write(buffer, 0, n);
}
return out.toByteArray();
}
1.2 分段读取二进制文件,一次读取1024个字节
byte[] buffer = new byte[1024];
private void readLocalFile() throws IOException {
String fileName = "abcd.raw";
InputStream inputStream = getAssets().open(fileName);
int n = -1;
while ((n = inputStream.read(buffer,0,1024)) != -1) {
//buffer为读出来的二进制数据,长度1024,最后一段数据小于1024
}
inputStream.close();
}
2.分段读取手机目录中本地二进制文件
手机目录中有二进制文件abcd.raw 。
二进制文件所在手机目录 /sdcard/abcd.raw
private void readLocalFile() {
FileInputStream inputStream = null;
File file = new File("/sdcard/abcd.raw");
try {
inputStream = new FileInputStream(file);
byte buffer[] = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer,0,buffer.length))>0) {
//buffer为读出来的二进制数据,长度1024,最后一段数据小于1024
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream!=null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
3.写入手机目录二进制文件
写入到手机目录中有二进制文件/sdcard/aaa.raw 。
FileOutputStream fos = null;
private void openPCMfile(byte[] bytes) {
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator+ "aaa.raw");
if (!f.exists()) {
File parentFile = f.getParentFile();
if (!parentFile.exists()) {
parentFile.mkdirs();
}
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
fos = new FileOutputStream(f);
fos.write(bytes, 0, bytes.length);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现