Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 287|回复: 0

[JavaIO学习]锁文件的例子

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-30 23:57:48 | 显示全部楼层 |阅读模式
    import java.nio.channels.*; /**
    * 锁住文件(不让其它线程或进程修改)
    *
    * @author kingfish
    */ public class LockFile{
    public LockFile(){
    }  public static void main(String[] args) throws Exception {

      
      

    1.         RandomAccessFile raf=new RandomAccessFile(new File("c:\test.txt"),   "rw");
    2.         FileChannel   fc=raf.getChannel();
    3.         FileLock   fl=fc.tryLock();
    4.         if(fl.isValid())   {
    5.             System.out.println("get   the   lock!");
    6.             //测试线程
    7.             new   Thread()   {
    8.                 public void run(){
    9.                     while(true){
    10.                         try{
    11.                             Thread.sleep(100);
    12.                             FileReader fr=new FileReader(new File("c:\test.txt"));
    13.                             int   c;
    14.                             while((c=fr.read())!= -1)   {
    15.                                 System.out.println("OK="+(char)c);
    16.                             }
    17.                             fr.close();
    18.                             break;
    19.                         }
    20.                         catch(Exception  e){
    21.                             System.out.println("error="+e);
    22.                         }
    23.                     }
    24.                 }
    25.             }.start();
    26.             //模拟其它操作的耗时:比如用notepad打开无法修改。但是用程序来读写此文件都会异常
    27.             raf.write("kingfish(八百里秦川@龙城异客)".getBytes());
    28.             Thread.sleep(5000);
    29.             fl.release();
    30.             System.out.println("release the lock!");
    31.         }
    32.         raf.close();
    33.     }
    34. }
    35. 程序运行的结果:

    36.   C:java>java LockFile

    37.     get the lock!

    38.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    39.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    40.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    41.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    42.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    43.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    44.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    45.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    46.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    47.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    48.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    49.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    50.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    51.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    52.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    53.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    54.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    55.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    56.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    57.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    58.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    59.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    60.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    61.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    62.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    63.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    64.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    65.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    66.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    67.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    68.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    69.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    70.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    71.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    72.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    73.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    74.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    75.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    76.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    77.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    78.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    79.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    80.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    81.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    82.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    83.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    84.     errorjava.io.IOException: 另一个程序已锁定文件的一部分,进程无法访问。

    85.     release the lock!

    86.     OK=k

    87.     OK=i

    88.     OK=n

    89.     OK=g

    90.     OK=f

    91.     OK=i

    92.     OK=s

    93.     OK=h

    94.     OK=(

    95.     OK=八

    96.     OK=百

    97.     OK=里

    98.     OK=秦

    99.     OK=川

    100.     OK=@

    101.     OK=龙

    102.     OK=城

    103.     OK=异

    104.     OK=客

    105.     OK=)
    复制代码
    C:java>

      
      
       
       

         
       

         
       
      


    源码下载:http://file.javaxxz.com/2014/10/30/235747781.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 22:07 , Processed in 0.376820 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表