import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
/**
*
* MappedByteBuffer可用于对大文件的修改.
*
*/
public class LargeMappedFiles {
static int length = 128 * 1024 * 1024;//128m
public static void main(String[] args) throws FileNotFoundException, IOException {
RandomAccessFile file = new RandomAccessFile("d:\\a.txt","rw");
//MappedByteBuffer是特殊的直接缓冲器.必须指定文件的开始位置和文件大小.
MappedByteBuffer out = file.getChannel().map(FileChannel.MapMode.READ_WRITE, file.length(), length);
for(int i=0; i<length; i++){
out.put((byte)'x');
}
System.out.println("Finish writing.");
for(int i = length/2; i<(length/2 + 6); i++){
System.out.println((char)out.get(i));
}
file.close();
}
}
分享到:
相关推荐
5. **文件系统操作**:NIO提供FileChannel,可以高效地进行文件读写操作,包括映射文件到内存(MappedByteBuffer)。 6. **管道(Pipes)**:管道是两个线程之间进行单向数据传输的通道,用于线程间通信。 7. **...
Java NIO中提供了多种类型的缓冲区,如ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer、MappedByteBuffer等,每种类型的缓冲区都有其特定的用途和应用场景。 通道...
在Java NIO中,内存映射文件(MappedByteBuffer)是一个重要的特性,它允许将文件直接映射到内存中,以便于快速访问和修改文件内容。这一特性不仅提高了读写效率,而且还能用于进程间通信(IPC)。 内存映射文件的...
在实际应用中,Java NIO常用于网络服务器、大文件处理、多线程间的通信等场景。理解并掌握NIO的原理和使用,对于提升Java应用的性能和可扩展性至关重要。通过以上介绍的知识点,你可以开始编写基于NIO的应用,例如...
此外,Java NIO的内存映射文件(MappedByteBuffer),允许文件或文件的一部分被映射到内存中,这使得对文件的访问和修改可以像访问内存一样简单快捷。 以上是Java NIO的核心概念和组件的介绍。在实际的编程实践中,...
最后,`Java_NIO.ppt`很可能是整个NIO主题的综合教程,覆盖了从基础到进阶的所有内容,包括基本的读写操作、多路复用、内存映射文件(MappedByteBuffer)以及NIO在Socket通信中的应用等。 总的来说,这些PPT课件构成...
当一个线程修改了`MappedByteBuffer`中的内容时,这些更改会立即反映到原始文件中,反之亦然。这种方式特别适合于大数据处理和实时系统,因为它减少了数据在内核空间和用户空间之间来回拷贝的次数。 在Java中,使用...
5. **文件系统操作**:NIO提供了一组新的API来处理文件系统操作,如文件通道的映射、文件属性的获取和修改、异步文件操作等,这些功能比标准的File类更强大。 6. **管道(Pipe)**:管道是两个线程之间的单向数据...
- **MappedByteBuffer**: 直接映射文件到内存中的Buffer,允许直接在内存中修改文件内容,无需通过Channel读取。 - **优势**: 提高文件读写的效率。 **2. 使用** - **创建MappedByteBuffer**: 通过FileChannel的...
Java中的MappedByteBuffer是Java NIO(New Input/Output)库的一部分,它提供了一种高效的方式来访问和操作大文件。在标题和描述中提到的“文件内存映射缓冲区”是Java处理大文件的一种高级技术,它允许将文件直接...
5. **NIO(New IO)**:Java 1.4引入了NIO(Non-blocking I/O),提供了更高效的数据传输方式,如`FileChannel`、`MappedByteBuffer`等。NIO支持选择器(Selector)进行多路复用,适合处理大量并发连接。 6. **文件...
19. **内存映射文件**:`java.nio.MappedByteBuffer`提供内存映射文件功能,提升大文件处理效率。 以上只是Java文件操作的一部分知识点,实际开发中还会涉及文件权限控制、并发访问、流操作等更多内容。了解并熟练...
- 可能会用到`java.nio`包中的类,如`FileChannel`和`MappedByteBuffer`,它们提供了更高效的数据传输方式。 - 设计模式如工厂模式(创建文件对象)、装饰者模式(增加文件操作的功能)和观察者模式(文件变化通知...
NIO.2是Java 7引入的进一步改进,提供了更多的功能,包括文件系统事件监听、异步I/O等。 1. **变更通知**: NIO.2引入了文件系统事件监听的功能,通过`java.nio.file.WatchService`接口实现。例如,开发者可以注册...
Java NIO的FileChannel和MappedByteBuffer支持大文件的高效处理。 以上知识点构成了Java开发中的基础工具,熟练掌握这些工具包将极大地提高代码质量和开发效率。无论是在桌面应用、Web服务还是移动应用开发中,都能...
- 使用`java.nio.MappedByteBuffer`将文件映射到内存中,允许直接操作文件而无需全部加载到内存。 6. **Off-Heap存储**: - 使用Off-Heap内存,如Apache JBoss的`Chronicle Queue`或Oracle的Java堆外内存分配,...
对于大文件的处理,NIO的内存映射文件(MappedByteBuffer)也是很好的选择,它可以将文件部分映射到内存,从而提高读写速度。 最后,Java的I/O流库提供了丰富的选择,如ObjectInputStream和ObjectOutputStream用于...
- **FileChannel.map/MappedByteBuffer**:映射文件到内存,实现零拷贝。 **2. 高效内存管理** - **合理选择Buffer类型**:根据实际需求选择合适的`ByteBuffer`类型。 - **缓存管理**:合理设计缓存机制,减少不必...
4. **使用FileChannel和MappedByteBuffer**:通过`java.nio`包中的类,可以进行更高效的数据传输。`FileChannel`允许直接从文件通道读写数据,而`MappedByteBuffer`则可以将文件映射到内存,提供随机访问和高性能的...