Java从数据库读取信息执行文件拷贝
Java从数据库读取信息执行文件拷贝,简单实用。
package read_db_copy_files;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class MysqlDemo {
public static void main(String[] args) throws Exception {
ArrayList<String> bd_list = readF1("bd.log");
Connection conn = null;
String sql;
String url = "jdbc:mysql://192.168.6.93:3306/resume_parse?"
+ "user=miaohr&password=123456&useUnicode=true&characterEncoding=UTF8";
// 目标文件夹
String dest_dir = "./dest_dir/";
// 创建目标文件夹
(new File(dest_dir)).mkdirs();
try {
Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
System.out.println("成功加载MySQL驱动程序");
// 一个Connection代表一个数据库连接
conn = DriverManager.getConnection(url);
// Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
Statement stmt = conn.createStatement();
System.out.println("filepath\tip");
for(String bd_string : bd_list){
sql = "SELECT filepath,ip,filename FROM `middleware_parse_count` WHERE filename='"+bd_string+"'";
ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
while (rs.next()) {
//string = "/mnt/smbfs94/resume_parse_manager/Files_slave_model_bak/fen/2015-05-22//13bceea1-aeb8-48af-9079-f10b1a886a80.doc";
//System.out.println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int类型可以用getInt()
String newpath = rs.getString(1);
String[] strarray=rs.getString(2).split("\\.");
String destpath = dest_dir+rs.getString(3);
newpath = newpath.replaceFirst("/opt/", "/mnt/smbfs"+strarray[3]+"/");
System.out.println(newpath);
copyFile(new File(newpath),new File(destpath));
}
}
} catch (SQLException e) {
System.out.println("MySQL操作错误");
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.close();
}
}
public static ArrayList<String> readF1(String filePath) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(filePath)));
ArrayList<String> list1 = new ArrayList<String>();
for (String line = br.readLine(); line != null; line = br.readLine()) {
System.out.println(line);
list1.add(line);
}
br.close();
return list1;
}
// 复制文件
public static void copyFile(File sourceFile, File targetFile) throws IOException {
BufferedInputStream inBuff = null;
BufferedOutputStream outBuff = null;
try {
// 新建文件输入流并对它进行缓冲
inBuff = new BufferedInputStream(new FileInputStream(sourceFile));
// 新建文件输出流并对它进行缓冲
outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));
// 缓冲数组
byte[] b = new byte[1024 * 5];
int len;
while ((len = inBuff.read(b)) != -1) {
outBuff.write(b, 0, len);
}
// 刷新此缓冲的输出流
outBuff.flush();
} finally {
// 关闭流
if (inBuff != null)
inBuff.close();
if (outBuff != null)
outBuff.close();
}
}
}