Re: a program process a constantly updated file
Thank you very much.
Based on what I found from google, I have made the following code. It
is very short and works well. It needs two extra apache jar files
which are available from web:
commons-vfs-1.0.jar
commons-logging-1.1.1.jar
<<FileMonitor.java>>
package test;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import org.apache.commons.vfs.FileChangeEvent;
import org.apache.commons.vfs.FileListener;
import org.apache.commons.vfs.FileObject;
import org.apache.commons.vfs.FileSystemException;
import org.apache.commons.vfs.FileSystemManager;
import org.apache.commons.vfs.VFS;
import org.apache.commons.vfs.impl.DefaultFileMonitor;
public class FileMonitor implements FileListener
{
public static void main(final String[] args) throws Exception
{
final String inputFileName = "C:\\Program Files (x86)\\temp\
\file_to_be_monitored.txt";
try
{
final FileSystemManager fsManager = VFS.getManager();
final FileObject listendir =
fsManager.resolveFile(inputFileName);
final DefaultFileMonitor fm = new DefaultFileMonitor(new
FileMonitor());
fm.setRecursive(true);
fm.addFile(listendir);
fm.start();
fm.run();
}
catch(final FileSystemException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void fileChanged(final FileChangeEvent fe) throws Exception
{
System.out.println("file changed.");
}
public void fileCreated(final FileChangeEvent fe) throws Exception
{
System.out.println("file created");
//// what ever you need to just write here
}
public void fileDeleted(final FileChangeEvent fe) throws Exception
{
System.out.println("file deleted");
}
}
</End FileMonitor.java>