JAVA内存文件映射
有如下情况下可以用到内存文件映射技术解决问题:
1.不要复制文件中所有的数据,只需要修改文件中局部的数据。
2.并行\分段处理大文件。
如下代码示使用javaNIO局部修改文件中指定位置的部分数据:
Java代码
/**
* 修改文件中的某一部分的数据测试:将字定位置的字母改为大写
* @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);
//示例修改字节
&nb
相关文档:
下边是自己对类的一些使用认识,如果有不对的,敬请达人指正。
任何类的使用都经历:类加载和类初始化的阶段。
类初始化:
*普通成员属性:
1.系统默认初始化,基本类型默认为0或false,引用类型默认为null。
2.声明时显示初始化或普通初始化块(注意:普通初始化只有在new构造函数创建实例时,才会被自动调 ......
//求两数的最大公约数和最小公倍数
import java.util.*;
public class Dais02
{
public static void main(String args[])
{
int m,n;
Scanner s = new Scanner(System.in);
System.out.println("请输入你想要是数字");
m = s.nextInt();
n ......
本文由博主从http://www.blogjava.net/freeman1984/archive/2007/09/27/148850.html转载;原文出处,博主也不知道,希望对大家有点帮助......
六种异常处理的陋习
你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?
1 Output ......
java中synchronized用法(zz)
打个比方:一个object就像一个大房子,大门永远打开。房子里有 很多房间(也就是方法)。这些房间有上锁的(synchronized方法), 和不上锁之分(普通方法)。房门口放着一把钥匙(key),这把钥匙可以打开所有上锁的房间。另外我把所有想调用该对象方法的线程比喻成想进入这房子某个 ......