/**
*
*/
package main;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
*@Copyright (c), 2012-2016,DaZhi NetWork.Co.,Ltd
*@package main
*@FileName:Test3.java
*@Author:wang.huaqun
*@Date:2017-3-16
*@Description:
*@Vesion:1.0
*/
public class Test3 implements Runnable{
/**
* 监控的文件路径
*/
private static String dir;
/**
* 扫描间隔时间以秒为单位
*/
private static int period;
/**
* 原有文件信息
*/
private static Map < String, String > oldDirFileMap;
/**
* 初始化相关数据
* @return
*/
public static void dirMonitor(String dir, int period) {
Test3.dir = dir;
Test3.period = period;
Test3.oldDirFileMap = new HashMap < String, String >();
}
/**
* 线程的执行。对于修改文件的情况,则视为删除与增加两个操作。
*/
public void run() {
boolean isError = false;
File file = new File(dir);
// 初始化开始监控时的文件路径状态
totalScan(file, oldDirFileMap);
// 展示原有路径下的文件信息
displayNowFile();
while (!isError) {
try {
Thread.sleep(period * 1000);
// 指定时间间间隔后扫描路径
Map < String, String > nowDirFileMap = new HashMap < String, String >();
totalScan(file, nowDirFileMap);
// 得到删除的文件及文件夹
getDeletedFile(nowDirFileMap);
// 得到新增的文件及文件夹
getAddedFile(nowDirFileMap);
// 注意:由于涉及到修改,所以一定要先检测删除的文件,然后再检测新增加的文件
} catch (InterruptedException e) {
System.out.println("对指定的文件路径进行监控时产生异常,异常信息为:" + e.getMessage());
isError = true;
}
}
}
/**
* 递归扫描整个路径
* @param dir
* @param ndir
* @param dirFileMap 存放扫描结果
*/
private void totalScan(File file, Map < String, String > dirFileMap) {
String[] fileList = file.list();
// 判断是否为空目录
if (null != fileList) {
for (int i = 0; i < fileList.length; i++) {
String pname = file.getAbsolutePath() + "\\" + fileList[i];
File tempFile = new File(pname);
if (tempFile.isDirectory()) {
dirFileMap.put(pname, "文件夹:\t" + pname);
totalScan(tempFile, dirFileMap);
} else {
// 不相同的文件夹下,存放的文件可能名字相同,但是同一路径下的文件肯定不会相同,
// 所以采用全路径做为key值
dirFileMap.put(pname, "文件:\t" + pname);
}
}
}
}
/**
* 得到增加的文件及文件夹,并增加到已有的文件信息中
*/
private void getAddedFile(Map < String, String > nowDirFileMap) {
for (Iterator < String > iterator = nowDirFileMap.keySet().iterator(); iterator.hasNext();) {
String key = iterator.next();
if (null == oldDirFileMap.get(key)) {
oldDirFileMap.put(key, nowDirFileMap.get(key));
System.out.println("新增" + nowDirFileMap.get(key));
}
}
}
/**
* 得到删除的文件及文件夹,并删除已经不存在的文件信息
*/
private void getDeletedFile(Map < String, String > nowDirFileMap) {
for (Iterator < String > iterator = oldDirFileMap.keySet().iterator(); iterator.hasNext();) {
String key = iterator.next();
if (null == nowDirFileMap.get(key)) {
System.out.println("删除" + oldDirFileMap.get(key));
iterator.remove();
oldDirFileMap.remove(key);
}
}
}
/**
* 展示原有文件
*/
private void displayNowFile() {
System.out.println(dir + "路径原有文件目录如下:\n");
Set set = oldDirFileMap.keySet();
Iterator < String > iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(oldDirFileMap.get(iterator.next()));
}
System.out.println("========================");
}
/**
* just for test
* @param args
*/
public static void main(String[] args) {
Test3 ts = new Test3();
Test3.dirMonitor("D:\\temp12345", 5);
ts.run();
}
}
==========================分割===================================
/**
*
*/
package com.dazhi.trsapp.util;
import java.io.File;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/**
*@Copyright (c), 2012-2016,DaZhi NetWork.Co.,Ltd
*@package com.dazhi.trsapp.util
*@FileName:WordtoPdf.java
*@Author:wang.huaqun
*@Date:2017-2-10
*@Description:
*@Vesion:1.0
*/
public class WordtoPdf {
static final int wdFormatPDF = 17;// PDF 格式
public void wordToPDF(String sfileName,String toFileName){
long start = System.currentTimeMillis();
ActiveXComponent app = null;
Dispatch doc = null;
try {
app = new ActiveXComponent("Word.Application");
app.setProperty("Visible", new Variant(false));
Dispatch docs = app.getProperty("Documents").toDispatch();
doc = Dispatch.call(docs, "Open" , sfileName).toDispatch();
File tofile = new File(toFileName);
if (tofile.exists()) {
tofile.delete();
}
Dispatch.call(doc,
"SaveAs",
toFileName, // FileName
wdFormatPDF);
long end = System.currentTimeMillis();
} catch (Exception e) {
System.out.println(sfileName+"========Error:文档转换失败:" + e.getMessage());
} finally {
Dispatch.call(doc,"Close",false);
if (app != null)
app.invoke("Quit", new Variant[] {});
}
//如果没有这句话,winword.exe进程将不会关闭
ComThread.Release();
}
public static void main(String[] args) {
WordtoPdf d = new WordtoPdf();
d.wordToPDF("E:\\321.doc", "E:\\test_321test.pdf");
}
}