import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class Test {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
// 这个写法是固定的
// 2.获取数据库连接:通过java的驱动管理器
// url-数据库地址:user -用户名:password-密码 Connection为连接 DriverManager驱动管理器
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@172.16.3.5:1521:orcl",
" sys as SYSDBA", "2017oracle2017");
System.out.println("---------------------数据库连接成功-------------------");
// 3.获得操作数据库声明
Statement st = conn.createStatement();// Statement声明 createStatement创建声明
// 5.查询数据
// ResultSet数据结果集
ResultSet rs = st.executeQuery("select t.uuid, t.file_path, t.file_name , t.ip_address from SHUJURUKUQINGKUANG.SYS_LOAD_FILE t where (t.file_suff = 'FRM' OR t.file_suff = 'frm' or t.file_suff = 'MYD' OR t.file_suff = 'myd' or t.file_suff = 'MYI' OR t.file_suff = 'myi' )and t.ip_address = '172.16.3.229' and t.file_same = '首次出现' and t.状态 is null order by t.file_size desc");
// next() 判断是否存在下一条记录,如果存在就移动指针到下一条记录上
while (rs.next()){
// 读取数据
String FILE_PATH =rs.getString("FILE_PATH");
//int columnIndex =0;
//rs.getArray(columnIndex);
System.out.println("读取文件路径:"+FILE_PATH);
String file_name=rs.getString("file_name");
//读取uuid判断uuid是否想同如果相同更改状态已入库
String UUID =rs.getString("UUID");
st.executeUpdate("update SHUJURUKUQINGKUANG.SYS_LOAD_FILE T SET T.状态= '已入库' ,T.处理日期 = TO_DATE(SYSDATE),T.服务器名 = '172.16.3.219',T.用户= 'ruku',T.录入人= 'yc' WHERE T.UUID='"+UUID+"' AND T.IP_ADDRESS = '172.16.3.229' AND T.FILE_SAME = '首次出现' ");
//需要复制的目标文件或目标文件夹
String pathname =(FILE_PATH);
File file = new File(pathname);
//复制到的位置
String topathname =(file_name);
File toFile = new File(topathname);
//创建ftp客户端
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("utf-8");
String hostname = "172.16.3.219";
int port = 21;
String username = "root";
String password = "123456";
try {
//链接ftp服务器
ftpClient.connect(hostname, port);
//登录ftp
ftpClient.login(username, password);
int reply = ftpClient.getReplyCode();
System.out.println(reply+"---Linux连接成功---");
//如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限下面有详细的解释。
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
return ;
}
//服务器之间传输需要加下列语句
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.changeWorkingDirectory("/home/mysql/ruku");
String remoteFileName = ""+toFile;
InputStream input = new FileInputStream(file);
ftpClient.storeFile(remoteFileName, input);//文件你若是不指定就会上传到root目录下
System.out.println("---文件复制完成---");
input.close();
ftpClient.logout();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally
{
if (ftpClient.isConnected())
{
try
{
ftpClient.disconnect();
} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
}
// 释放资源 目的:在Windows中每运行一个程序,系统资源就会减少。
// 有的程序会消耗大量的系统资源,即使把程序关闭,在内存中还是有一些没用的DLL文件在运行,这样就使得系统的运行速度下降。
rs.close();
st.close();
// 关闭数据库
conn.close();
System.out.println("------------------------------数据库链接已关闭----------------------");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。