Java文件操作大全(七)

45.驗證Schema
//import java.io.*;
//import javax.xml.parsers.*;
//import org.xml.sax.*;
//import org.w3c.dom.*;
String xsdFileName = /"Q:////_dev_stu////xsdtest////src////note.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 ([email protected]
* @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"
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章