Java Android 二进制文件读写

摘要:
=-1){out.write;}返回。toByteArray();}1.2分段读取二进制文件,一次读取1024字节,byte[]buffer=newbyte[1024];PrivatevoidreadLocalFile()throwsIOException{StringfileName=“abcd.raw”;InputStreaminputStream=getAssets().open;intn=-1;while((n=inputStream.read(buffer,01024))!=-1){//buffer是读取的二进制数据,长度为1024,最后一段数据小于1024}inputStream。close();}2.分段读取移动电话目录中的本地二进制文件。有一个二进制文件abcd。手机目录中的raw。二进制文件所在的移动目录/sdcard/abcd RawdprivatevoidreadLocalFile(){FileInputStreaminputStream=null;Filefile=newFile;try{inputStream=newFileInputStream;bytebuffer〔〕=newbyte〔1024〕;integer=0;而{//buffer是读取的二进制数据,长度为1024,最后一段数据小于1024}catch{e.printStackTrace();}最后{if(inputStream!=null){try{inputStream.close();}捕获{e.printStackTrace();}}}}3.二进制文件/sdcard/aaa。raw被写入移动目录。

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();
}
}

免责声明:文章转载自《Java Android 二进制文件读写》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Notification(Notification的通知栏常驻、Notification的各种样式、Notification点击无效)SQL获取当天0点和23点59分方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python模块介绍- binascii:二进制和ASCII互转以及其他进制转换

20.1 binascii:二进制和ASCII互转作用:二进制和ASCII互相转换。 Python版本:1.5及以后版本 binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法。通常情况不会直接使用这些功能,而是使用像UU,base64编码,或BinHex封装模块。 binascii模块包含更高级别的模块使用的,用C语言编写的低级高效功...

使用C#读写结构化的二进制文件

最近工作上遇到一个问题,就是有将近200万个CSV文件,每个CSV文件包含了成千上万条实验数据,CSV以一个不连续的整数值作为文件名,比如:1.CSV、2.CSV、3.CSV、5.CSV等等。另外又有200万个XML文件,每个XML文件的文件名与CSV的文件名一一对应,在这些XML文件中,定义了所对应的CSV实验数据文件的实验描述信息(比如实验名称、实验类...

Python中读取txt文本出现“ 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence”的解决办法

UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence 今天练习通过读取英文版的Walden.txt的文本信息,统计文本中的英文单词词频的时候出现了这样的错误提示。 错误的意思是:Unicode的解码(Decode)出现...

ASP无组件上传进度条解决方案

****************************************************************本作品来自网络,版权归原作者所有。如有异议,请留言。****************************************************************一、无组件上传的原理     我还是一点一点用一个...

如何进行 WebSocket 协议的压测

通过 Apache JMeter 和对应的插件编写脚本,并在 PTS 中上传这些脚本、插件 JAR 包和其他相关文件,即可发起压测。 本文以 JMeter WebSocket Samplers 插件为例,主要介绍如何在本地使用 Apache JMeter 编写、调试压测脚本,以实现 WebSocket 协议的业务场景压测。 背景信息 目前 PTS 原生压测...

LeetCode刷题笔记(3)Java位运算符与使用按位异或(进制之间的转换)

  1.问题描述   给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。   算法应该具有线性时间复杂度并且不使用额外空间。 输入: [4,1,2,1,2] 输出: 4   2.解题思路   这道题的主要的难点是具有线性时间复杂度并且不能使用额外的空间,因此就排除了很多的方法。   当时使用双指针尝试了以...