为了使自己的 Application 不会启动多个 Instance,做了如下尝试:
private static StringBuffer tmpFile = new StringBuffer();
private static boolean CheckInstance( ) {
boolean rst = false;
tmpFile.append( System.getProperty( "java.io.tmpdir" ) );
tmpFile.append( "HodePrn.tmp" );
File fp = new File( tmpFile.toString() );
if( fp.exists() ) {
try {
FileOutputStream fos = new FileOutputStream( fp.getPath() );
if( fos.getChannel().tryLock() == null ) {
rst = false;
}
else
rst = true;
} catch ( IOException e ) {
rst = false;
}
}
else {
try {
fp.createNewFile();
FileOutputStream fos = new FileOutputStream( fp.getPath() );
if( fos.getChannel().tryLock() == null ) {
rst = false;
}
else
rst = true;
} catch( IOException e ) {
rst = false;
}
}
return rst;
}
原来想用 jni 来实现,但是总觉得用 jni 来做这个实在大材小用,这个勉强凑合能用了,在 windows 平台上测试过,用 system 权限删除不了 lock 了的临时文件。
在下是 java 新手,还没入门,还望各位指正。
本文地址:http://com.8s8s.com/it/it12497.htm