android MemeoryFile和Parcel操作文件描述符fd
2017-05-17 15:12
375 查看
ParcelFileDescriptor pfd;
FileDescriptor fd;
Parcel p;
static byte[]
testString =
new
byte[] {1,2,3,4,5,6,7,8,9};
byte[] buffer =
new byte[testString.length];
MemoryFile
file = new
MemoryFile("test", 64);//创建匿名共享内存
public
static void
printHexString( byte[]
b){
for(int i = 0; i< b.length; i++){
String hex = Interger.toHexString(b[i] & 0xFF);
if(hex.length() == 1){
hex = '0' + hex;
}
Log.e(TAG,"print :" +
new String(hex.toUpperCase()));
}
Log.e(TAG,"print end \n\n\n");
}
Setup 1:写文件描述符fd
pfd = new
ParcelFileDescriptor(file.getFileDescriptor());//获取文件描述符
fd = pfd.getFileDescriptor();
file.writeBytes(testString, 0, 0, testString.length);//向匿名共享内存写数据
file.readBytes(buffer, 0, 0, testString.length);//从ashmem读数据
printHexString(testString);//打印写入ashmem的数据
printHexString(buffer);//打印从ashmem读出的数据
p = Parcel.obtain();//Parcel类序列化操作
p.writeFileDescriptor(fd);//写文件描述符
Setup 2:读文件描述符和共享内存数据
p.setDataPosition(0);
pfd = p.readFileDescriptor();
fd = pfd.getFileDescriptor();//读取Setup 1的文件描述符fd
MemoryFile
rfd = new
MemoryFile(fd, testString.length,
"r");//从fd描述符后,建立映射
byte[]
buf = new
byte[9];
rfd.readBytes(buf, 0, 0, testString.length);//读取ashmem的数据
printHexString(buf);//打印验证
file.close();
FileDescriptor fd;
Parcel p;
static byte[]
testString =
new
byte[] {1,2,3,4,5,6,7,8,9};
byte[] buffer =
new byte[testString.length];
MemoryFile
file = new
MemoryFile("test", 64);//创建匿名共享内存
public
static void
printHexString( byte[]
b){
for(int i = 0; i< b.length; i++){
String hex = Interger.toHexString(b[i] & 0xFF);
if(hex.length() == 1){
hex = '0' + hex;
}
Log.e(TAG,"print :" +
new String(hex.toUpperCase()));
}
Log.e(TAG,"print end \n\n\n");
}
Setup 1:写文件描述符fd
pfd = new
ParcelFileDescriptor(file.getFileDescriptor());//获取文件描述符
fd = pfd.getFileDescriptor();
file.writeBytes(testString, 0, 0, testString.length);//向匿名共享内存写数据
file.readBytes(buffer, 0, 0, testString.length);//从ashmem读数据
printHexString(testString);//打印写入ashmem的数据
printHexString(buffer);//打印从ashmem读出的数据
p = Parcel.obtain();//Parcel类序列化操作
p.writeFileDescriptor(fd);//写文件描述符
Setup 2:读文件描述符和共享内存数据
p.setDataPosition(0);
pfd = p.readFileDescriptor();
fd = pfd.getFileDescriptor();//读取Setup 1的文件描述符fd
MemoryFile
rfd = new
MemoryFile(fd, testString.length,
"r");//从fd描述符后,建立映射
byte[]
buf = new
byte[9];
rfd.readBytes(buf, 0, 0, testString.length);//读取ashmem的数据
printHexString(buf);//打印验证
file.close();
相关文章推荐
- [android] 关于android的文件描述符(fd)的各种操作的实现
- 记录了Android系统上基于ashmem或Fd的一些对象由于进程内文件描述符耗尽不能被创建的Issues。
- Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- fcntl设置FD_CLOEXEC && fcntl(文件描述符操作)
- Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- Android系列教程 adb操作命令详解
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
- android 模拟器访问现有数据库操作。
- Android操作framebuffer[zz]
- android的文件操作。(未整理完成)
- android数据库操作会出现Leak found,即出现泄漏问题解决
- Android开发——对sdcard扩展卡文件操作
- Android常用模拟器操作命令
- Android Parcel
- android 操作图像像素
- 文件描述符操作
- fcntl操作文件描述符--ZT
- 操作fd_set的三个函数的实现小记
- android实现双击功能操作