日期:2014-05-20  浏览次数:20847 次

java中FileLock的使用问题
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class FileLockExa
{
  public static void main(String[] args) 
{ int b;
byte tom[]=new byte[100];
try
{ File f=new File("G://java code/jackxu/src","good.txt");
RandomAccessFile input=new RandomAccessFile(f,"rw");
FileChannel channel=input.getChannel();
while((b=input.read(tom, 0, 10))!=-1)
{ FileLock lock=channel.tryLock();
String s=new String(tom,0,b);
System.out.println(s);
try
{ Thread.sleep(1000);
lock.release();  
}
catch(Exception e){System.out.println(e);}
input.close();

 
}
catch(Exception ee){System.out.println(ee);}


}

}
上面的程序是一个文件锁在流输出语句中的使用,这儿为什么读取了good.txt十个字节的数据之后,就输出了ee中的异常,“外面java.io.IOException: Stream Closed”,线程过1秒解锁,就应该继续读啊?我把解锁的语句lock.release();去掉也是和第一次输出的结果一致,这个又是怎么回事???


------解决方案--------------------
你的while循环,最后一句话是:“input.close();”

你自己把流给关闭了,当然就没法继续读取了。。。