import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class ReName {
/**
* @param args
*/
public static String SRC_FILE_PATH = "F:\\MyProject\\JdbcOracle\\src.txt";
public static String DEST_FILE_PATH = "F:\\MyProject\\JdbcOracle\\dest.txt";
public static String BEGIN = "<result name=\"FIELDNAME\">";
public static String END = "</result>";
/**
* 以行爲單位讀取文件,常用於讀面向行的格式化文件
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
BufferedWriter writer = null;
try {
System.out.println("以行爲單位讀取文件內容,一次讀一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次讀入一行,直到讀入null爲文件結束
while ((tempString = reader.readLine()) != null) {
// 顯示行號
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
public static void readFileByLinesAndWriteFile(String readFileName,
String writeFileName) {
File fileReader = new File(readFileName);
File fileWriter = new File(writeFileName);
BufferedReader reader = null;
BufferedWriter writer = null;
try {
System.out.println("以行爲單位讀取文件內容,一次讀一整行:");
reader = new BufferedReader(new FileReader(fileReader));
writer = new BufferedWriter(new FileWriter(fileWriter));
String tempString = null;
int line = 1;
// 一次讀入一行,直到讀入null爲文件結束
while ((tempString = reader.readLine()) != null) {
// 顯示行號
System.out.println("line " + line + ": " + tempString);
line++;
if (tempString.contains(BEGIN)) {
String temp = getStringBetween(tempString,BEGIN,END);
tempString = " <result name=\"FIELDNAME\">" + temp + END;
}
writer.write(tempString);
writer.write("\n");
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
if (writer != null) {
try {
writer.close();
} catch (IOException e1) {
}
}
}
}
/*
* change "tradeIdTradeName" to "TRADE_ID_TRADE_NAME"
*/
public static String changeToUpcase(String oldFieldName) {
String newFieldName = "";
if (oldFieldName != null) {
char[] c = oldFieldName.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < oldFieldName.length(); i++) {
if (Character.isUpperCase(c[i])) {
sb.append('_');
}
sb.append(c[i]);
}
newFieldName = sb.toString().toUpperCase();
}
return newFieldName;
}
/*
* get the string between BEGIN and END string
*/
public static String getStringBetween(String str, String begin, String end) {
String result = "";
if (begin != null && end != null && str != null) {
if (str.contains(begin) && str.contains(end)) {
str = str.replaceAll(begin,"").replaceAll(end,"");
str = str.trim();
str = changeToUpcase(str);
}
}
result = str;
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
readFileByLinesAndWriteFile(SRC_FILE_PATH, DEST_FILE_PATH);
}
}
src.txt:
<action name="deletebook" class="com.delete.delete_bookAction">
<result name="FIELDNAME">fuckId</result>
<result name="FIELDTYPE">BIGINTEGER</result>
</action>
<action name="deletebook" class="com.delete.delete_bookAction">
<result name="FIELDNAME">fuckDate</result>
<result name="FIELDTYPE">DATE</result>
</action>
<action name="deletebook" class="com.delete.delete_bookAction">
<result name="FIELDNAME">fuckIdFuckName</result>
<result name="FIELDTYPE">STRING</result>
</action>