写了一批Lua脚本,要放到数据库里面,调用的时候进行计算,由于有太多lua脚本,就写了个程序来录入。

  下面主要分三个部分:

  1. public static String readToString(String fileName)
  2.  
  3. public static void wirteToMYSQL(String string) throws FileNotFoundException
  4.  
  5. public static List<String> getFileList(String strPath)

readToString,用作从lua脚本,也就是文件中读取script出来,传送一个参数就是文件夹的绝对路径。

writeToMYSQL主要进行数据库写的函数,main函数里面也就调用了这一个函数,也就是说这个函数调用了另外两个函数。

getFileList,对指定路径的文件夹进行遍历,找遍所有的lua脚本,并将lua脚本的绝对路径处理(加上\,因为java处理绝对路径需要加上)放到一个list里面。

writeToMYSQL本来是打算传个参数作为路径进去的,想想就用一次,就直接在里面写死了绝对路径。

上完整代码:

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.io.UnsupportedEncodingException;
  6. import java.sql.Connection;
  7. import java.sql.DriverManager;
  8. import java.sql.SQLException;
  9. import java.sql.Statement;
  10. import java.util.LinkedList;
  11. import java.util.List;
  12.  
  13. import com.mysql.jdbc.PreparedStatement;
  14.  
  15. public class Test {
  16. public static void main(String[] args) throws IOException {
  17.  
  18. wirteToMYSQL("");
  19.  
  20. }
  21.  
  22. public static String readToString(String fileName) {
  23. String encoding = "UTF-8";
  24. File file = new File(fileName);
  25. Long filelength = file.length();
  26. byte[] filecontent = new byte[filelength.intValue()];
  27. try {
  28. FileInputStream in = new FileInputStream(file);
  29. in.read(filecontent);
  30. in.close();
  31. } catch (FileNotFoundException e) {
  32. e.printStackTrace();
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36. try {
  37. return new String(filecontent, encoding);
  38. } catch (UnsupportedEncodingException e) {
  39. System.err.println("The OS does not support " + encoding);
  40. e.printStackTrace();
  41. return null;
  42. }
  43. }
  44.  
  45. public static void wirteToMYSQL(String string) throws FileNotFoundException {
  46.  
  47. final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
  48. final String DB_URL = "jdbc:mysql://192.168.**.***:3306/cqc";
  49. final String USER = "***";
  50. final String PASS = "*****";
  51.  
  52. Connection conn = null;
  53. Statement stmt = null;
  54.  
  55. List<String> id = getFileList("C:\\Users\\yefeifan\\Desktop\\lua");
  56. List<String> fileList = new LinkedList<>();
  57. for (int i = 0; i < id.size(); i++) {
  58. fileList.add(id.get(i));
  59. }
  60.  
  61. // 得到 文件名list也就是id list C001002000_001
  62. for (int i = 0; i < id.size(); i++) {
  63. id.set(i, id.get(i).substring(35, 49));
  64. }
  65.  
  66. // 得到script内容
  67. List<String> scripts = new LinkedList<>();
  68. for (int i = 0; i < fileList.size(); i++) {
  69. // System.out.println(readToString(fileList.get(i)));
  70. scripts.add(readToString(fileList.get(i)));
  71. }
  72. try {
  73. Class.forName("com.mysql.jdbc.Driver");
  74. System.out.println("连接数据库...");
  75. conn = DriverManager.getConnection(DB_URL, USER, PASS);
  76.  
  77. PreparedStatement pstmt;
  78. // 执行查询
  79. for (int i = 0; i < scripts.size(); i++) {
  80. String sql = "update capability set function_script=' " + scripts.get(i) + "' where id='" + id.get(i)
  81. + "'";
  82. pstmt = (PreparedStatement) conn.prepareStatement(sql);
  83. pstmt.executeUpdate();
  84. pstmt.close();
  85. }
  86.  
  87. conn.close();
  88. } catch (SQLException se) {
  89. // 处理 JDBC 错误
  90. se.printStackTrace();
  91. } catch (Exception e) {
  92. // 处理 Class.forName 错误
  93. e.printStackTrace();
  94. } finally {
  95. // 关闭资源
  96. try {
  97. if (stmt != null)
  98. stmt.close();
  99. } catch (SQLException se2) {
  100. } // 什么都不做
  101. try {
  102. if (conn != null)
  103. conn.close();
  104. } catch (SQLException se) {
  105. se.printStackTrace();
  106. }
  107. }
  108. }
  109.  
  110. public static List<String> getFileList(String strPath) {
  111. List<String> filelist = new LinkedList<String>();
  112. File dir = new File(strPath);
  113. File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
  114. if (files != null) {
  115. for (int i = 0; i < files.length; i++) {
  116. String fileName = files[i].getName();
  117. if (files[i].isDirectory()) { // 判断是文件还是文件夹
  118. return null; // 获取文件绝对路径
  119. } else if (fileName.endsWith("lua")) { // 判断文件名是否以.avi结尾
  120. StringBuffer strFileName = new StringBuffer(files[i].getAbsolutePath());
  121. strFileName.insert(2, '\\');
  122. strFileName.insert(9, '\\');
  123. strFileName.insert(19, '\\');
  124. strFileName.insert(28, '\\');
  125. strFileName.insert(33, '\\');
  126. filelist.add(strFileName.toString());
  127. } else {
  128. continue;
  129. }
  130. }
  131. }
  132. return filelist;
  133. }
  134. }

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

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

    [Java]读取文件方法大全   1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile {     /**     ...

  2. Java 读取文件的内容

    Java 读取文件的内容 1) CLASS_NAME: 换成自己真实的类名 2) /page/test.json: 换成自己真实的page 3) FileUtils: 来自于org.apache.co ...

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

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

  4. java读取文件的基本操作

    import java.io.FileInputStream; /** * 使用FileInputStream读取文件 */ public class FileRead { /** * @param ...

  5. 使用java读取文件夹中文件的行数

    使用java统计某文件夹下所有文件的行数 经理突然交代一个任务:要求统计某个文件夹下所有文件的行数.在网上查了一个多小时没有解决.后来心里不爽就决定自己写一个java类用来统计文件的行数,于是花了两个 ...

  6. Java读取文件的几种方式

    package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; im ...

  7. java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)

    1.实现目标 读取文件,将文件中的数据一行行的取出. 2.代码实现 1).方式1: 通过BufferedReader的readLine()方法. /** * 功能:Java读取txt文件的内容 步骤: ...

  8. Java 读取文件到字符串

    Java的io操作比较复杂 package cn.outofmemory.util; import java.io.BufferedReader; import java.io.FileInputSt ...

  9. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

随机推荐

  1. Java和Flex整合报错(三)

    1.错误描述 信息: Initializing Spring FrameworkServlet 'mvc' 11-13 23:43:42 INFO [localhost-startStop-1] or ...

  2. Web.config中设置启用webservice远程调试访问

    在.NET 中已经默认将webservice的远程调试功能关闭,有的时候我们需要远程调试程序的时候,就需要打开此功能我们只需在webservice的项目的中添web.config的<system ...

  3. LinearRegression 线性回归

    一.预测 先来看看这样一个场景: 假如你手头有一套房子要出售,你咨询了房产中介.中介跟你要了一系列的数据,例如房子面积.位置.楼层.年限等,然后进行一系列计算后,给出了建议的定价. 房产中介是如何帮你 ...

  4. 试着讲清楚:js代码运行机制

    一. js运行机制 js执行引擎 经常看文章的说到js是带线程的,其实这个说法非常的模糊,准确的是js执行引擎是单线程的,js执行引擎就是js代码的执行器,有了这个概念就可以下来说说js是如何运行的了 ...

  5. 【UOJ207】共价大爷游长沙(Link-Cut Tree,随机化)

    [UOJ207]共价大爷游长沙(Link-Cut Tree,随机化) 题面 UOJ 题解 这题太神了 \(\%\%\%myy\) 看到动态的维护边很容易的想到了\(LCT\) 然后能否堵住一条路 我们 ...

  6. Delphi的RzDbgrid改变某行的背景色

    本想改变符合条件的行的背景色,试了DbgridEh和原生的Dbgrid直接在DrawColumnCell事件中写重绘代码就好了,But在RzDbgrid就不起效果,查了好一会,百度了一大堆,都是千篇一 ...

  7. 解决Android Studio 3.0导入module依赖后unable to merge index

    解决Android Studio 3.0导入module依赖后unable to merge index 项目需要使用im, 在项目里导入了腾讯im的几个module依赖, 项目无法编译, 报错una ...

  8. Redis学习日记-01

    Redis是什么东东? Redis是用C语言开发的Key-Value数据库,说是数据库,其实他是NoSql(非关系型数据库). 这里顺便说一下Sql(关系型数据库,如MySql,Oracle等)和No ...

  9. Qt下载地址

    上Qt官网http://www.qt.io/download/想下载Qt,速度很慢,在这里记录下在Qt官网看到的镜像下载地址: 1. 所有Qt版本下载地址: http://download.qt.io ...

  10. Unity中List的随机排序(乱序)

    为什么要给List排序做一个Unity限定条件呢 首先,是C#中的List泛型,若是Java,直接调用Collection.shuffle()就OK了 而Unity的C#版本较低,不能使用Random ...