`
SSailYang
  • 浏览: 313208 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

NIO 文件随机存取问题

    博客分类:
  • Java
 
阅读更多

NIO 的内存映射文件机制虽然在操作大文件上有速度的优势,但我觉得它不能真正实现文件随机。

FileChannel fc = new RandomAccessFile(new File("temp.tmp"), "rw").getChannel();
IntBuffer ib = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size()).asIntBuffer();
ib.position(100);

上面是一段用 NIO 内存映射文件机制来实现的文件随机存取的代码。

fc.map() 的最后一个参数类型是 Long,但 position() 的参数类型是 int。这样的话,如果文件的大小的字节数抄过了 int 的最大值,position 就无法将文件指针定位到那里。

 

有谁对 NIO 比较了解的,说明一下这个问题怎么解决。

分享到:
评论

相关推荐

    Java-NIO-Programming-Cookbook(含源码)

    6. **文件通道(File Channels)**:允许直接从文件读写数据,支持随机访问和大文件操作。 7. **内存映射文件(Memory-Mapped Files)**:通过映射文件到内存,提供了一种高效的大文件处理方式,使得文件可以直接被...

    文件管理系统

    例如,`File`类用于表示文件和目录,`RandomAccessFile`用于随机访问文件,`BufferedReader`和`BufferedWriter`进行缓冲的读写操作,`FileInputStream`和`FileOutputStream`则提供字节流的读写功能。此外,Java的`...

    深入浅出MappedByteBuffer.pdf

    2. **物理内存**:即实际安装在计算机上的RAM(随机存取内存),用于临时存储正在运行的应用程序的数据。 3. **虚拟内存**:虚拟内存是一种技术,使得应用程序可以使用超出物理内存大小的地址空间。这种技术通过...

    Java IO流的相关操作

    `FileChannel`提供了一种低级别、高性能的文件操作方式,可以进行随机访问、传输大块数据以及与其他通道(如网络套接字)之间的数据传输。`FileLock`则用于在多线程环境下锁定文件的部分区域,防止并发修改。 7. **...

    ssd3exercise5

    在Java编程中,涉及到SSD的操作通常与文件系统交互、数据存取优化以及性能测试有关。 本主题“ssd3exercise5”可能是一个关于Java编程的练习项目,其目标是让学生或开发者深入理解如何利用Java有效地与SSD进行交互...

    JavaSE(下).pdf1111

    * 随机存取文件流 * NIO.2 中 Path、Paths、Files 类的使用 7. 网络编程(516-535页) * 网络编程概述 * 网络通信要素概述 * 通信要素 1:IP 和端口号 * 通信要素 2:网络协议 * TCP 网络编程 * UDP 网络编程 * ...

    一种高并发分布式缓存服务架构.pdf

    本文还讨论了分布式缓存服务架构的优点和缺点,例如 Hash 取模方案的优点是算法简单、容易实现、有不错的随机分布特性,但缺点是难以扩容、扩容后缓存命中率大幅降低。另一方面,一致性Hash算法的优点是充分利用 ...

    Attention-JAVA核心面试知识整理.pdf

    - **NIO的缓冲区(Buffer)**: 用于数据的存取。 - **NIO的非阻塞模式**: 通道(Channel)可以设置成非阻塞模式,使得在没有数据可读取的情况下,不会阻塞当前线程。 - **Selector**: 用于监听多个Channel的就绪状态...

    有关Java经典问答

    - **NIO(非阻塞I/O)**:Java NIO提供了一种新的I/O模型,可以提高程序的效率,尤其是处理大量连接时。 6. **网络编程**: - **Socket编程**:Java的Socket类和ServerSocket类用于实现客户端-服务器通信。 - **...

    Java 语言基础

    - **ArrayList和LinkedList**:两种常用的列表实现,ArrayList提供了快速随机访问,LinkedList适合频繁插入和删除。 - **HashSet和HashMap**:无序不重复元素集合,HashMap允许通过键值对快速存取。 - **接口**:...

    tools:Java常用工具类

    ArrayList适合于随机访问,而LinkedList适合于频繁的插入和删除操作。 2. **java.util.Arrays** Arrays类提供了一系列静态方法,用于操作数组,如排序、填充、复制和比较等。 3. **java.util.Collections** ...

    每日测试:每日测试

    此外,Java的IO流和NIO(非阻塞I/O)系统提供了读写文件和网络通信的能力。 线程是Java并发编程的关键,通过Thread类或Runnable接口可以创建并执行多线程。线程同步机制,如synchronized关键字、volatile变量、wait...

Global site tag (gtag.js) - Google Analytics