45.验证Schema
//import java.io.*;
//import javax.xml.parsers.*;
//import org.xml.sax.*;
//import org.w3c.dom.*;
String xsdFileName = /"Q:_dev_stuxsdtestsrcnote.xsd/";
try {
//创建默认的XML错误处理器
XMLErrorHandler errorHandler = new XMLErrorHandler();
//获取基于 SAX 的解析器的实例
SAXParserFactory factory = SAXParserFactory.newInstance();
//解析器在解析时验证 XML 内容。
factory.setValidating(true);
//指定由此代码生成的解析器将提供对 XML 名称空间的支持。
factory.setNamespaceAware(true);
//使用当前配置的工厂参数创建 SAXParser 的一个新实例。
SAXParser parser = factory.newSAXParser();
//创建一个读取工具
SAXReader xmlReader = new SAXReader();
//获取要校验xml文档实例
Document xmlDocument = (Document) xmlReader.read(new File(xmlFileName));
//设置 XMLReader 的基础实现中的特定属性。核心功能和属性列表可以在 [url]http://sax.sourceforge.net/?selected=get-set[/url] 中找到。
parser.setProperty(
/"http://java.sun.com/xml/jaxp/properties/schemaLanguage",
/"http://www.w3.org/2001/XMLSchema");
parser.setProperty(
/"http://java.sun.com/xml/jaxp/properties/schemaSource",
/"file:/" + xsdFileName);
//创建一个SAXValidator校验工具,并设置校验工具的属性
SAXValidator validator = new SAXValidator(parser.getXMLReader());
//设置校验工具的错误处理器,当发生错误时,可以从处理器对象中得到错误信息。
validator.setErrorHandler(errorHandler);
//校验
validator.validate(xmlDocument);
XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());
//如果错误信息不为空,说明校验失败,打印错误信息
if (errorHandler.getErrors().hasContent()) {
System.out.println(/"XML文件通过XSD文件校验失败!/");
writer.write(errorHandler.getErrors());
} else {
System.out.println(/"Good! XML文件通过XSD文件校验成功!/");
}
} catch (Exception ex) {
System.out.println(/"XML文件: /" + xmlFileName + /" 通过XSD文件:/" + xsdFileName + /"检验失败。/n原因: /" + ex.getMessage
());
ex.printStackTrace();
}
}
46.Grep
//import java.util.regex.*;
//import java.io.*;
/**
* Simple implementation of the ubiquitous grep command.
* First argument is the regular expression to search for (remember to
* quote and/or escape as appropriate). All following arguments are
* filenames to read and search for the regular expression.
*
* Created: April, 2002
* @author Ron Hitchens (ron@ronsoft.com)
* @version $Id: SimpleGrep.java,v 1.1 2002/05/07 02:21:08 ron Exp $
*/
public static void main (String [] argv)
throws Exception
{
if (argv.length < 2) { // 如果参数行没有输入参数,结束程序
System.out.println ("Usage: regex file [ ... ]");
return;
}
Pattern pattern = Pattern.compile (argv [0]); // 第一个参数为需要匹配的字符串
Matcher matcher = pattern.matcher ("");
// 一次读取各个文件
for (int i = 1; i < argv.length; i++) {
String file = argv [i]; // 第2个参数开始,均为文件名。
BufferedReader br = null;
String line;
try {
br = new BufferedReader (new FileReader (file)); // 打开文件
} catch (IOException e) {
// 没有打开文件,则产生异常
System.err.println ("Cannot read '" + file
+ "': " + e.getMessage());
continue;
}
while ((line = br.readLine()) != null) { // 读入一行,直到文件结束
matcher.reset (line); // 匹配字符串
if (matcher.find()) { // 如果有匹配的字符串,则输出
System.out.println (file + ": " + line);
}
}
br.close(); // 关闭文件
}
}
47.直接创建多级目录
//import java.io.*;
File f=new File(%%1);
f.mkdirs();
48.批量重命名
//import java.io.*;
File target = new File("%%1");
String[] files = target.list();
File f = null;
String filename = null;
for (String file : files) {
f = new File(fl, file);
filename = f.getName();
if (filename.substring(filename.lastIndexOf
(".")).equalsIgnoreCase(
"%%2")) {
f.renameTo(new File(target.getAbsolutePath(),
filename.replace(
"%%2", "%%3")));
// 这里可以反复使用replace替换,当然也可以使用正则表达式来
替换了 ".txt" ".bat"
}
}