讀寫文件

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>

發佈了62 篇原創文章 · 獲贊 22 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章