将程序打包成jar包在控制台调用同时传入参数

本文介绍了一款用于批量修改HTML文件的小程序,通过在指定位置添加链接实现自动化处理,有效提升了工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      因工作需要,最近写了一个小程序,主要功能是批量修改html文件,在指定位置加上一个a标签,代码如下:

package com.chachaba.com.addhtml;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class AddHtml {

	public static long count=0;
	/**
	 * @param 文件目录
	 */
	public static void main(String[] args) {
		String path = args[0];
		long begin = System.currentTimeMillis();
		File root = null;
		try {
			root = new File(path);
		} catch (Exception e) {
			throw new RuntimeException("输入的文件目录参数非法,请输入合法文件目录");
		}
		searchFiles(root);
		System.out.println("修改文件总数:"+count);
		System.out.println("修改使用时间:" + (System.currentTimeMillis() - begin));
	}

	/**
	 * 递归查找html文件
	 * 
	 * @param root
	 */
	private static void searchFiles(File root) {
		File[] filesOrDirs = root.listFiles();
		for (int i = 0; i < filesOrDirs.length; i++) {
			if (filesOrDirs[i].isDirectory()) {
				searchFiles(filesOrDirs[i]);
			} else {
				String fileName = filesOrDirs[i].getName();
				// 建立正则匹配商家页html文件
				String reg = "[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}.html";
				Pattern p = Pattern.compile(reg);
				Matcher m = p.matcher(fileName);
				if (m.matches()) {
					++count;
					// 添加链接
					addUrlToHtml(filesOrDirs[i]);
					String path = filesOrDirs[i].getAbsolutePath();
					// 将原文件删除
					filesOrDirs[i].delete();
					File fileOut = new File(path + ".bak");
					// 将备份文件重命名为原文件的名称
					fileOut.renameTo(new File(path));
				}
			}
		}
	}

	/**
	 * 读取文件,添加指定字符串后,写入另一个文件
	 */
	private static void addUrlToHtml(File htmlFile) {
		// File fileIn = htmlFile;
		// 用临时文件保存输出
		File fileOut = new File(htmlFile.getAbsolutePath() + ".bak");
		// 得到文件名
		StringBuilder name = new StringBuilder(htmlFile.getName());
		// 插入"_address"
		name.insert(name.indexOf("."), "_address");
		// 得到要添加的url
		String url = name.toString();

		// 建立正则表达式,匹配要修改的字符串处
		Pattern p = Pattern.compile(".*地 址:<span>.*</span><br />.*");
		// 建立正则表达式,过滤掉已经添加过链接的文件,避免重复添加
		Pattern pFilter = Pattern
				.compile(".*地 址:<span><a href=.*</a></span><br />.*");
		BufferedReader reader = null;
		PrintWriter writer = null;
		try {
			// 以行为单位读取文件内容,一次读一整行
			// 文件输入流,指定字符集为UTF-8
			FileInputStream fis = new FileInputStream(htmlFile);
			InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
			reader = new BufferedReader(isr);

			// 文件输出流,指定字符集UTF-8
			FileOutputStream fos = new FileOutputStream(fileOut);
			OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
			writer = new PrintWriter(osw);

			String tempString = null;

			// 一次复制一行,直到读入null为文件结束
			while ((tempString = reader.readLine()) != null) {
				Matcher m = p.matcher(tempString);
				Matcher mFilter = pFilter.matcher(tempString);
				// 匹配成功则加入链接
				if (m.matches() && !mFilter.matches()) {
					tempString = addhref(tempString, url);
				}
				writer.println(tempString);
				writer.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e1) {
				}
				if (writer != null) {
					writer.close();
				}
			}
		}
	}

	/**
	 * 在地址处加上链接
	 * 
	 * @param tempString
	 *            需要叫链接的字符串
	 * @param url
	 *            连接的url
	 * @return html字符串
	 */
	private static String addhref(String tempString, String url) {
		StringBuilder sb = new StringBuilder();
		String[] arrstr1 = tempString.split("<span>");
		sb.append(arrstr1[0] + "<span><a href='");
		sb.append(url + "'>");
		String[] arrstr2 = arrstr1[1].split("</span>");
		// 将地址附加到StringBuilder
		sb.append(arrstr2[0]);
		sb.append("</a></span><br />");
		return sb.toString();
	}
}

完成之后需要将该程序打包成jar包,过程如下:

选择项目导出:

选择jar包:

选择要导出的文件:

选择主函数:

在控制台运行并传入参数:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值