寫了一批Lua腳本,要放到數據庫里面,調用的時候進行計算,由於有太多lua腳本,就寫了個程序來錄入。
下面主要分三個部分:
public static String readToString(String fileName) public static void wirteToMYSQL(String string) throws FileNotFoundException public static List<String> getFileList(String strPath)
readToString,用作從lua腳本,也就是文件中讀取script出來,傳送一個參數就是文件夾的絕對路徑。
writeToMYSQL主要進行數據庫寫的函數,main函數里面也就調用了這一個函數,也就是說這個函數調用了另外兩個函數。
getFileList,對指定路徑的文件夾進行遍歷,找遍所有的lua腳本,並將lua腳本的絕對路徑處理(加上\,因為java處理絕對路徑需要加上)放到一個list里面。
writeToMYSQL本來是打算傳個參數作為路徑進去的,想想就用一次,就直接在里面寫死了絕對路徑。
上完整代碼:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.LinkedList; import java.util.List; import com.mysql.jdbc.PreparedStatement; public class Test { public static void main(String[] args) throws IOException { wirteToMYSQL(""); } public static String readToString(String fileName) { String encoding = "UTF-8"; File file = new File(fileName); Long filelength = file.length(); byte[] filecontent = new byte[filelength.intValue()]; try { FileInputStream in = new FileInputStream(file); in.read(filecontent); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { return new String(filecontent, encoding); } catch (UnsupportedEncodingException e) { System.err.println("The OS does not support " + encoding); e.printStackTrace(); return null; } } public static void wirteToMYSQL(String string) throws FileNotFoundException { final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; final String DB_URL = "jdbc:mysql://192.168.**.***:3306/cqc"; final String USER = "***"; final String PASS = "*****"; Connection conn = null; Statement stmt = null; List<String> id = getFileList("C:\\Users\\yefeifan\\Desktop\\lua"); List<String> fileList = new LinkedList<>(); for (int i = 0; i < id.size(); i++) { fileList.add(id.get(i)); } // 得到 文件名list也就是id list C001002000_001 for (int i = 0; i < id.size(); i++) { id.set(i, id.get(i).substring(35, 49)); } // 得到script內容 List<String> scripts = new LinkedList<>(); for (int i = 0; i < fileList.size(); i++) { // System.out.println(readToString(fileList.get(i))); scripts.add(readToString(fileList.get(i))); } try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("連接數據庫..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); PreparedStatement pstmt; // 執行查詢 for (int i = 0; i < scripts.size(); i++) { String sql = "update capability set function_script=' " + scripts.get(i) + "' where id='" + id.get(i) + "'"; pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.executeUpdate(); pstmt.close(); } conn.close(); } catch (SQLException se) { // 處理 JDBC 錯誤 se.printStackTrace(); } catch (Exception e) { // 處理 Class.forName 錯誤 e.printStackTrace(); } finally { // 關閉資源 try { if (stmt != null) stmt.close(); } catch (SQLException se2) { } // 什么都不做 try { if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } } public static List<String> getFileList(String strPath) { List<String> filelist = new LinkedList<String>(); File dir = new File(strPath); File[] files = dir.listFiles(); // 該文件目錄下文件全部放入數組 if (files != null) { for (int i = 0; i < files.length; i++) { String fileName = files[i].getName(); if (files[i].isDirectory()) { // 判斷是文件還是文件夾 return null; // 獲取文件絕對路徑 } else if (fileName.endsWith("lua")) { // 判斷文件名是否以.avi結尾 StringBuffer strFileName = new StringBuffer(files[i].getAbsolutePath()); strFileName.insert(2, '\\'); strFileName.insert(9, '\\'); strFileName.insert(19, '\\'); strFileName.insert(28, '\\'); strFileName.insert(33, '\\'); filelist.add(strFileName.toString()); } else { continue; } } } return filelist; } }
