监听linux上的磁盘文件,并把磁盘文件新增文件的内容插入到mysql数据库

首先是主程序端:
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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值