首先是主程序端:
public class Read_f {
public static void main(String[] args) {
ZJPFileMonitor m;
try {
m = new ZJPFileMonitor(5000);
///usr/kankan
m.monitor(“E:\xxx”,new ZJPFileListener());
m.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//response.getWriter().write(“okokok”);
System.out.print(“ok”);
}
}
接着进入监听器端:
public class ZJPFileMonitor {
FileAlterationMonitor monitor = null;
public ZJPFileMonitor(long interval) throws Exception {
monitor = new FileAlterationMonitor(interval);
}
public void monitor(String path, FileAlterationListener listener) {
FileAlterationObserver observer = new FileAlterationObserver(new File(path));
monitor.addObserver(observer);
observer.addListener(listener);
}
public void stop() throws Exception{
monitor.stop();
}
public void start() throws Exception {
monitor.start();
}
public static void main(String[] args) throws Exception {
ZJPFileMonitor m = new ZJPFileMonitor(5000);
m.monitor("E:\\kankan",new ZJPFileListener());
m.start();
}
}
接着LISTENER调用Monitor端进行文件夹的监听:
package ihep.toimaps.listener;
import ihep.toimap.tools.Monitor;
import java.io.File;
import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationObserver;
public class ZJPFileListener implements FileAlterationListener{
Getstring gs=new Getstring();
Monitor mo=new Monitor();
ZJPFileMonitor monitor = null;
public void onStart(FileAlterationObserver observer) {
//System.out.println("onStart");
}
@Override
public void onDirectoryCreate(File directory) {
System.out.println("onDirectoryCreate:" + directory.getName());
}
@Override
public void onDirectoryChange(File directory) {
System.out.println("onDirectoryChange:" + directory.getName());
}
@Override
public void onDirectoryDelete(File directory) {
System.out.println("onDirectoryDelete:" + directory.getName());
}
@Override
public void onFileCreate(File file) {
//System.out.println("onFileCreate:" + file.getName());
String content=null;
try {
content = Getstring.txt2String(file);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println("getpath:"+file.getPath()+"++++"+file.getAbsolutePath()+content);
try {
System.out.println(mo.insert(content));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFileChange(File file) {
System.out.println("onFileChange : " + file.getName());
}
@Override
public void onFileDelete(File file) {
System.out.println("onFileDelete :" + file.getName());
}
@Override
public void onStop(FileAlterationObserver observer) {
//System.out.println("onStop");
}
}
接下来是导包:
一、MyEclipse导出jar
1、在项目根目录下新建MANIFEST.MF文件,
注:
MANIFEST.MF文件的基本格式:
Manifest-Version: 1.0
属性名称(版本号)+:+空格+属性
Main-Class: com.sunlink.send.tttt_bak
主类的全包名
值每行最多72个字符,换行继续必须以空格开头
文件最后必须要有一个回车换行
Class-Path 当前路径是jar包所在目录,如果要引用当前目录下一个子目录中的jar包,使用以下格式
子目录/xxx.jar 子目录/yyy.jar
技巧:多个jar包的引用,可以使用 .classpath 文件中classpathentry 的值
在任何平台上路径分割符都是 /,多个jar包引用以空格分开
例如
这里写图片描述
2、选中需要打包的项目,右键,Export
3、如下图选择JAR file 然后Next
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191224155140745.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pzeWxk,size_16,color_FFFFFF,t_70)
4、如下图指定,并选择jar导出目录经(必须和lib同级),然后Next
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019122415524738.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pzeWxk,size_16,color_FFFFFF,t_70)
5、此步骤选择默认,跳过,Next
![这里写图片描述](https://img-blog.csdnimg.cn/20191224155307772.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pzeWxk,size_16,color_FFFFFF,t_70)
6、最后一步Finish;
这里写图片描述
二、Linux 运行jar包的四种方式
注:该jar必须在lib的同级目录执行
1、方式一:
java -jar com.maph.test.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
那如何让窗口不锁定?
2、方式二:
java -jar com.maph.test.jar &
&代表在后台运行。
特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
继续改进,如何让窗口关闭时,程序仍然运行?
3、方式三:
nohup java -jar com.maph.test.jar &
nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
4、方式四:
nohup java -jar com.maph.test.jar >temp.txt &
解释下 >temp.txt
command >out.file
command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
综合以上方式继续优化如下:
可以新建一个可执行文件,如run.sh,并修改运行权限(chmod 755 run.sh);
run.sh文件内容:java -jar com.maph.test.jar
最后执行命令:nohup ./run.sh >/dev/null & (将错误重定向到标准输出“黑洞”)
检查任务运行进程:ps -ef|grep test