一.Java代码命令行运行
1.编写java可执行代码:
package org.gfg;
import com.nciae.watermark.Watermark;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
public class Testa {
public static final Watermark wm = new Watermark();
public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
public static void inputWatermark(String watermarkInfo, String filePath, String outputPath) {
System.out.println(sdf.format(new Date()) + "file:" + filePath + ",set watermark info");
String output = outputPath + filePath.substring(filePath.lastIndexOf(File.pathSeparator) + 1);
boolean flag = wm.Embed(filePath, output, watermarkInfo);
if (flag) {
System.out.println(sdf.format(new Date()) + "file:" + filePath + ",set watermark info success!");
} else {
System.out.println(sdf.format(new Date()) + "file:" + filePath + ",set watermark info error!");
}
}
public static List<String> outputWatermarkInfo(String filePath) {
List<String> values = new ArrayList<String>();
boolean extract = wm.Extract(filePath, values);
long startTime = System.currentTimeMillis();
if (!extract) {
System.out.println(sdf.format(new Date()) + "file:" + filePath + ",get watermark failure.");
return null;
}
System.out.println(sdf.format(new Date()) + "file:" + filePath + ",get watermark info. time consuming:" + (System.currentTimeMillis() - startTime) + "ms");
return values;
}
public static void inputWatermarkDir(String watermarkInfo, String filePath, String outputPath) {
File outputp = new File(outputPath);
if (!outputp.exists()) {
outputp.mkdirs();
}
System.out.println(sdf.format(new Date()) + ",file:" + filePath + ", enter");
File file = new File(filePath);
boolean exists = file.exists();
if (!exists) {
System.out.println(sdf.format(new Date()) + "file:" + filePath + ",not exist");
return;
}
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File subFile: files) {
inputWatermarkDir(watermarkInfo, subFile.getAbsolutePath(), outputPath);
}
} else {
inputWatermark(watermarkInfo, filePath, outputPath);
}
}
public static void outputWatermarkInfoFromDir(String fileDir) {
System.out.println(sdf.format(new Date()) + "file:" + fileDir + ", enter");
File file = new File(fileDir);
if (!file.exists()) {
System.out.println(sdf.format(new Date()) + "file:" + fileDir + ",does not exist");
return;
}
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File nextFile : files) {
String nextFilePath = nextFile.getAbsolutePath();
outputWatermarkInfoFromDir(nextFilePath);
}
} else {
List<String> infos = outputWatermarkInfo(fileDir);
if (Objects.isNull(infos)) {
System.out.println(sdf.format(new Date()) + "file:" + fileDir + ",watermake info:null");
return;
}
for (String info : infos) {
System.out.println(sdf.format(new Date()) + "file:" + fileDir + ",watermake info:" + info);
}
}
}
public static void main(String[] args) {
args = new String []{"yaojie", "//192.168.18.118/data/GF_DATA/shuiyin"};
if (Objects.isNull(args) || args.length < 2) {
System.out.println(sdf.format(new Date()) + ",error: Please enter watermark information, input folder and output folder");
}
String info = args[0];
String file = args[1];
System.out.println(sdf.format(new Date()) + ",start:" + file);
inputWatermarkDir(info, file, "./data/");
System.out.println(sdf.format(new Date()) + ",end:" + file);
}
}
2.以上代码通过javac编译
# -cp .;lib/commons-compress-1.8.jar;lib/watermark2-1.2.0.RELEASE.jar 为需要加载的jar包
# 需要事先安装jdk
javac -cp .;lib/commons-compress-1.8.jar;lib/watermark2-1.2.0.RELEASE.jar ./Testa.java
3.通过java 命令运行 .class文件
# Testa 为class文件, 后面 %info% 为添加所需要输入的参数, ">> ./log/matermake_input.txt" 输出信息写入文件
java -cp .;lib/commons-compress-1.8.jar;lib/watermark2-1.2.0.RELEASE.jar Testa %info% %input% >> ./log/matermake_input.txt
4.windows运行命令
# @echo off
# set /p info=please matermake info:
# 以上为可输入信息的命令
@echo off
set /p info=please matermake info:
@echo off
set /p input=please input file path:
# cd /d %~dp0 切换到当前的文件夹
cd /d %~dp0
javac -cp .;lib/commons-compress-1.8.jar;lib/watermark2-1.2.0.RELEASE.jar ./Testa.java
java -cp .;lib/commons-compress-1.8.jar;lib/watermark2-1.2.0.RELEASE.jar Testa %info% %input% >> ./log/matermake_input.txt
# pause 暂停,若没有,则执行结束后无法看见提示信息
pause
5.linux运行命令