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;
    }
}

原文地址:https://www.cnblogs.com/GoForMyDream/p/8625355.html

时间: 2024-11-06 07:29:03

Java读取文件存储到mysql的相关文章

Java读取文件的注意点

关于Java读取UTF-8和UTF-8 BOM文件的问题记录在此,仅给自己提个醒. 今天从文本文件中读取数据存储到数据库中,操作完之后检验数据库发现有一些记录出现差错,几经排查(╮(╯Д╰)╭,自己忘了把异常输出,费了不少时间.),发现都是每个文本文件下的第一行出现差错,终于找到原因了,是文件的编码惹的祸.存储数据的文本文件编码类型为UTF-8 BOM,文件编码类型该了一下,再一检验,问题解决. 处理方法可以参考http://www.2cto.com/kf/201108/98509.html J

Java读取文件夹大小的6种方法及代码

这篇文章介绍了JAVA读取文件夹大小的几种方法实例,有需要的朋友可以参考一下. (一)单线程递归方式 package com.taobao.test; import java.io.File; public class TotalFileSizeSequential { public static String fileName = "C:\\Documents and Settings\\Administrator\\桌面\\monkeytalk"; // 递归方式 计算文件的大小

[Java]读取文件方法大全(转)

[Java]读取文件方法大全 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile {    /**     * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件.     */    public static void readFileByBytes(String fileName) {        File file = new File(fileName);        Input

【转】Java读取文件方法大全

本文转自:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html#undefined 目录: 按字节读取文件内容 按字符读取文件内容 按行读取文件内容 随机读取文件内容 将内容追加到文件尾部 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fil

Java读取文件,将字符串转化成日期类型,将日期类型进行加减

最近总用Java读取文件,发现了一种我个人觉得比较好的方法,现在分享给大家 public static void main(String[] args) throws Exception { FileInputStream f = new FileInputStream("文件路径"); InputStreamReader fileInputStream = new InputStreamReader(f); BufferedReader br = new BufferedReader

java读取文件最后N行

原文:java读取文件最后N行 源代码下载地址:http://www.zuidaima.com/share/1550463669226496.htm 指定行数,可以获取到从这行到文件尾的所有行,分享自大熊. 源文件: 读取最后10行结果 import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List

Java读取文件 利用MappedByteBuffer进行缓冲

Java读取文件 利用MappedByteBuffer进行缓冲,这样可以保证边读取大文件,边进行处理 package sean; import java.io.ByteArrayInputStream; import java.io.File; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.util.Scann

Java读取文件的问题

java读取文件的两种方法:java.io和java.lang.ClassLoader (我就知道这两种.....) // java.io: File file = new File("..."); FileInputStream fis = new FileInputStream("..."); FileReader fr = new FileReader("..."); //ClassLoader: ClassLoader loader =

Java读取文件-BufferedReader/FileReader/InputStreamReader/FileInputStream的关系和区别

一.Java读取和存储文件数据流 Java读取文件,实际是将文件中的字节流转换成字符流输出到屏幕的过程 这里面涉及到两个类:InputStreamReader和OutputStreamWriter InputStreamReader:将字节流转换成字符流 OutputStreamWriter:将字符流转换成字节流 InputStreamReader继承Reader类 OutputStreamWriter继承Writer类 二.BufferedReader/FileReader/InputStre