Java讀取文件存儲到mysql


  寫了一批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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM