`
vaniice
  • 浏览: 40099 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

javaNIO局部修改文件中指定位置的部分数据(转)

    博客分类:
  • NIO
 
阅读更多

javaNIO局部修改文件中指定位置的部分数据

 

有如下情况下可以用到内存文件映射技术解决问题:
1. 不要复制文件中所有的数据,只需要修改文件中局部的数据。
2. 并行\分段处理大文件。

如下代码示使用javaNIO局部修改文件中指定位置的部分数据:
/**
* 修改文件中的某一部分的数据测试:将字定位置的字母改为大写
* @param fName  :要修改的文件名字
* @param start:起始字节
* @param len:要修改多少个字节
* @return :是否修改成功
* @throws Exception:文件读写中可能出的错
* @author  javaFound
*/
public static boolean changeFile(String fName,int start,int len) throws Exception{
//创建一个随机读写文件对象
java.io.RandomAccessFile raf=new java.io.RandomAccessFile(fName,"rw");
long totalLen=raf.length();
System.out.println("文件总长字节是: "+totalLen);
//打开一个文件通道
java.nio.channels.FileChannel channel=raf.getChannel();
//映射文件中的某一部分数据以读写模式到内存中
java.nio.MappedByteBuffer buffer=  channel.map(FileChannel.MapMode.READ_WRITE, start, len);
//示例修改字节
for(int i=0;i<len;i++){
byte src=    buffer.get(i);
buffer.put(i,(byte)(src-31));//修改Buffer中映射的字节的值
System.out.println("被改为大写的原始字节是:"+src);
}
buffer.force();//强制输出,在buffer中的改动生效到文件
buffer.clear();
channel.close();
raf.close();
return true;
}
//测试主方法
public static void main(String[] args) throws Exception{
changeFile("BigFileRW.java",3,5);
System.out.println(" change OK... ");
}

要想看到测试结果,需要在项目的的当前目录下创建一个名为BigFileRW.java文本文件,其中写上10上以上的字母。运行如上程序,文件中第3个 字母起后面5个都变为大写了。

NIO可以理解为传统IO的加强版,功能和性能都加强了,但使用变得更复杂。

分享到:
评论

相关推荐

    java nio 包读取超大数据文件

    Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据...

    java nio 读文件

    java nio 读文件,java nio 读文件

    JAVA NIO 简单PFT 文件服务

    JAVA NIO 简单PFT 文件服务 上传 下载 列表

    JavaNIO chm帮助文档

    Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六) Selector Java NIO系列教程(七) FileChannel Java NIO系列教程(八) SocketChannel Java NIO系列教程(九) ServerSocketChannel Java NIO...

    java nio 写文件

    java nio 写文件,java nio 写文件

    Java NIO 中文 Java NIO 中文 Java NIO 中文文档

    Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...

    JAVA NIO 按行读取大文件支持 GB级别-修正版

    本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取字节到 fbb中 然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件结束 ...

    java NIO和java并发编程的书籍

    java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...

    Java用NIO读取文件示范

    简单的用Java的NIO读取文件的程序,给大家参考。

    java NIO 视频教程

    标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 Java NIO: Non-blocking IO(非阻塞IO) Java NIO...

    java NIO 写文件

    java nio 写文件样例,java写大数据文件时提高性能

    JavaNIO.pdf

    FileChannel是Java NIO中用于读取、写入、映射和操作文件的通道。它提供了多种操作,如读取、写入、映射和锁定文件区域等。 * 读取和写入操作:FileChannel提供了多种读取和写入操作,可以以不影响通道当前位置的...

    Java NIO英文高清原版

    Java NIO英文高清原版

    JAVA NIO 按行读取大文件,支持 GB级别

    本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取字节到 fbb中 然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件...

    java NIO 中文版

    讲解了 JavaIO 与 JAVA NIO区别,JAVA NIO设计理念,以及JDK中java NIO中语法的使用

    java NIO.zip

    java NIO.zip

    Java NIO (中文版)

    Java NIO (中文版) PDF文档,带目录,非图片扫描 !!!

    java NIO文件操作(中文版pdf)

    java NIO文件操作(中文版pdf),希望对大家有帮助,(转载)

    java nio 实现socket

    java nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socket

    java nio 中文PDF

    java nio 中文PDF,

Global site tag (gtag.js) - Google Analytics