MappedByteBuffer的umap() JAVA Bug!
来源:互联网 发布:淘宝写文案范文 编辑:程序博客网 时间:2024/04/28 00:56
用到NIO的相关类--MappedByteBuffer时的一个BUG。
例如:
public void testMappedByteBufferRead() {
int length = 10485760;
MappedByteBuffer out = null;
RandomAccessFile ranFile = null;
File file = null;
try {
file = new File("d:/test.txt");
ranFile = new RandomAccessFile(file, "rw");
out = ranFile.getChannel().map(
FileChannel.MapMode.READ_WRITE, 0, length);
for (int i = 0; i < length; i++)
out.put((byte) 'x');
System.out.println("Finished writing");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
file.delete();
System.out.println("Delete File");
Thread.sleep(100000);
} catch (Exception e) {
e.printStackTrace();
}
}
int length = 10485760;
MappedByteBuffer out = null;
RandomAccessFile ranFile = null;
File file = null;
try {
file = new File("d:/test.txt");
ranFile = new RandomAccessFile(file, "rw");
out = ranFile.getChannel().map(
FileChannel.MapMode.READ_WRITE, 0, length);
for (int i = 0; i < length; i++)
out.put((byte) 'x');
System.out.println("Finished writing");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
file.delete();
System.out.println("Delete File");
Thread.sleep(100000);
} catch (Exception e) {
e.printStackTrace();
}
}
在网上收集一些资料都说是JAVA的一个BUG,一些网友自己写out的close()函数:
public static void clean(final Object buffer) throws Exception {
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
try {
Method getCleanerMethod = buffer.getClass()
.getMethod("cleaner", new Class[0]);
getCleanerMethod.setAccessible(true);
sun.misc.Cleaner cleaner = (sun.misc.Cleaner)
getCleanerMethod.invoke(buffer, new Object[0]);
cleaner.clean();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
});
}
但调用此函数后依然无法删除文件,即out没有关闭。
此问题比较棘手,不知各位技术牛人是否有更好的方法,望赐教,谢谢。
- MappedByteBuffer的umap() JAVA Bug!
- MappedByteBuffer的Bug
- java nio 之MappedByteBuffer
- java nio 之MappedByteBuffer
- java nio 之MappedByteBuffer
- JAVA NIO之MappedByteBuffer
- java nio 之MappedByteBuffer
- java nio 之MappedByteBuffer
- java nio 之MappedByteBuffer
- java、mappedByteBuffer读取文件
- Java RandomAccessFile与MappedByteBuffer
- Java NIO-MappedByteBuffer
- Java NIO教程 MappedByteBuffer
- java NIO之MappedByteBuffer
- 极大提高java I/O效率的方法:谈谈MappedByteBuffer
- MappedByteBuffer的使用
- MappedByteBuffer的使用
- MappedByteBuffer的使用
- VB.NET从VS2003升到VS2005后报表无法使用的解决方法 - 探寻者飞 - 博客园
- NetBeans 6.0终于正式发布了
- 程序员是真正的主角——SD2.0大会有感
- c#中字符串编码方式的转换,附带程序uft8到gb2312的互换
- Java对象创建和初始化过程,处理字符串的机制
- MappedByteBuffer的umap() JAVA Bug!
- 关于存储过程的参数和ASP优化问题
- WebCast 笔记 -- C#3.0锐利体验(1)
- Java中ThreadLocal的设计与使用
- 软件设计师考纲
- 哈夫曼编译码器遇到的问题
- 所有IS中的自定义窗体
- 无奈也开源
- ARM DSP FPGA的区别