java文件锁为什么不起作用?下面运行的时候该文件依然能被打开阿?

java文件锁为什么不起作用?下面运行的时候该文件依然能被打开阿?,第1张

package com.ruan.io

import java.io.BufferedReader

import java.io.FileInputStream

import java.io.FileOutputStream

import java.io.InputStreamReader

import java.nio.channels.FileLock

/**

* 文件加锁

* @author wangjian

*/

public class LockTester {

public static void main(String[] args) throws Exception{

//加上true参闷锋态数,不会重新生成一个新的文件。

FileOutputStream fos = new FileOutputStream("d:/a.txt",true)

FileLock fl = fos.getChannel().tryLock()

new ReadLockedFile().start() //试图读取,不成功。

if(fl!=null){

System.err.println("文件已经锁定..")

System.err.println(fl.isShared())

Thread.sleep(1000*60) //锁定1分蚂源钟

fl.release() //解除锁定

System.err.println("解除锁定..")

}

}

}

/**

* 用另一个线程读取已经锁基败定的文件。

*/

class ReadLockedFile extends Thread{

public void run(){

try{

BufferedReader br =

new BufferedReader(new InputStreamReader(new FileInputStream("d:/a.txt")))

String str = br.readLine()

while(str!=null){

System.err.println(str)

str = br.readLine()

}

br.close()

}catch(Exception e){

e.printStackTrace()

}

}

}

首先,使用eclipse ,在项目右键->tearm->cleanup , *** 作了几次问题依然存在。 然后使用命令:cd E:\gradlepro\cloudserver 。

在Java Web中clean的作用还是相当重要的,在一个项目中我们经常遇见这样的问题,当我们已经修改Action中的处理代码,但是运行发现还是未修改之前的处理方法,这个时候clean一下也许就会解决问题。

eclipse为了提高效率,并不是每次启动项目都会检毕亩查插件,通过clean就是强制eclipse去检查已安装插件。我们都知道.java文件是通过编译成.class文件运行的,而clean后会删除已经编译腔逗生成的class文件并重新部署项目。总而言之就是强制检手圆森查已安装插件,清除以前编译的信息,重新部署项目。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8157989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存