import java.io.*;
public class Example10_19 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File file=new File("Example10_19.java");
WindowFileLock win=new WindowFileLock(file);
win.setTitle("使用文件锁");
}
}
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class WindowFileLock extends JFrame implements ActionListener{
JTextArea text;
JButton button;
File file;
RandomAccessFile input;
FileChannel channel;
FileLock lock;
WindowFileLock(File f){
file=f;
try{
input=new RandomAccessFile(file,"rw");
channel=input.getChannel();
lock=channel.tryLock();
}
catch(Exception exp){}
text=new JTextArea();
button=new JButton("读取一行");
add(new JScrollPane(text),BorderLayout.CENTER);
add(button,BorderLayout.SOUTH);
setSize(300,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
try{
lock.release();
String lineString=input.readLine();
text.append("\n"+lineString);
lock=channel.tryLock();
if(lineString==null)
input.close();
}
catch(Exception ee){}
}
}
建立文件锁的步骤
1.使用RandomAccessFile建立指向文件的流对象,必须为rw。
2.input流使用getChannel()获取FileChannel对像channel。
3.channel调用tryLock()方法获得FileLock对像。
4.FileLock对像调用release可以释放文件锁。