/**
* 内存映射文件
* @author Administrator
*
*/
public class LargeMappedFiles {
private static int length = 0x8FFFFFF;
public static void main(String args[]) {
try {
MappedByteBuffer out = new RandomAccessFile(new File("D:\\Niotest.txt"), "rw")
.getChannel()
.map(FileChannel.MapMode.READ_WRITE, 0, length);
for(int i = 0; i < length;i++){
out.put((byte)'x');
}
System.out.println("Finished writing");
for(int i = length/2;i<length/2+6;i++){
System.out.println((char)out.get(i));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
内存映射文件上锁和部分内容上锁
/**
* 文件映射 针对大文件
* 大文件部分文件加锁
* @author Administrator
*
*/
public class LockingMappedFiles {
static FileChannel fc;
static final int LENGTH = 0x8FFFFFF;
public static void main(String args[]){
try {
fc = new RandomAccessFile("D:\\test.dat","rw").getChannel();
MappedByteBuffer out = fc.map(FileChannel.MapMode.READ_WRITE, 0, LENGTH);
for(int i = 0 ;i < LENGTH ;i++){
out.put((byte)'X');
}
new LockAndModify(out,0,0+LENGTH/3);
new LockAndModify(out,LENGTH/2,LENGTH/2+LENGTH/4);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static class LockAndModify extends Thread{
private ByteBuffer buff;
private int start,end;
LockAndModify(ByteBuffer mbb,int start,int end){
this.start = start;
this.end = end;
mbb.limit(end);
mbb.position(start);
//创建新缓冲区
buff = mbb.slice();
start();
}
public void run(){
try {
FileLock fl = fc.lock(start, end, false);
System.out.println("Locked : "+start+" to "+end);
while(buff.position()<buff.limit()-1){
buff.put((byte)(buff.get()+1));
}
fl.release();
System.out.println("Release : "+start+" to "+end);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
java利用内存映射读取大文件。并且捉行输出。
Java NIO 应用 -- 使用内存映射文件实现进程间通信
内存映射文件原理 首先说说这篇文章要解决什么问题? 1.虚拟内存与内存映射文件的区别与联系. 2.内存映射文件的原理. 3.内存映射文件的效率. 4.传统IO和内存映射效率对比. 虚拟内存与内存映射文件的区别与联系 ...
本实例中定义了STL文件中的基本数据结构,采用普通文件读取和内存映射文件读取两种方式,并对二者效率进行对比
一个文件内存映射,共有两个文件,一个读,一个写,很不错的
主要介绍了Java内存映射 大文件轻松处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
下面小编就为大家带来一篇Java中用内存映射处理大文件的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这个文件里面包含了java的IO流对文件的操作和java通道加内存映射对文件操作的源码
主要介绍了Java中使用内存映射实现大文件上传实例,本文对比测试了FileInputStream 或者FileOutputStream 抑或RandomAccessFile的频繁读写操作,最后总结出映射到内存后进行读写以提高速度,需要的朋友可以参考下
阅读比较比较Windows的内存映射文件读取速度与C ++ std :: ifstream库。设置Microsoft Visual Studio IDE,包括编译器Windows 10(教育版,x64) 具有16 GB RAM的SSD ### Tests为了大致了解内存映射文件和std :: ...
使用内存映射文件(MMF); 线程安全的Evergreen 对象; 当跨多个JVM(通过使用目标MMF上的锁定位)进行访问时,可以安全地读取/写入文件中的已保存实例。 低延迟(但我怀疑这与OpenHFT的编年史图没有任何距离)...
介绍Java直接读取、带缓冲读取、内存映射读取文件,并详细注释。
【IT十八掌徐培成】Java基础第27天-01.MappedMemoryBuffer-文件内存映射缓冲区.zip
MemMapComm 代码存储库,用于使用Java的内存映射文件测试IPC
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java NIO 源码适合初学者,里面包括通道和Buffer的基本适用,以及文件锁,和内存文件映射等等
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...