【java swing 编程】文件替换小秘书(六)

来源:互联网 发布:淘宝2017官方活动 编辑:程序博客网 时间:2024/06/10 02:42

工具中服务器以及文件路径的配置信息保存,文件的上传服务器以及下载至本地实现代码如下:

package util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Locale;import java.util.Properties;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JOptionPane;import panel.FTPServerPanel;import panel.FilePathPanel;import panel.PathPanel;public class CommonUtil {public static String getToday(String theFormat){SimpleDateFormat formatter = new SimpleDateFormat(theFormat,Locale.CHINESE);Date thedate=new Date();return formatter.format(thedate);}public static Icon getImg(String path) {return new ImageIcon(path);}public static void showMsgWin(String msg, int flg) {if(flg == 0) {JOptionPane.showMessageDialog(null, msg, "错误:", flg);} else if(flg == 1) {JOptionPane.showMessageDialog(null, msg, "提示:", flg);} else if(flg == 2) {JOptionPane.showMessageDialog(null, msg, "警告:", flg);}}public static String log(String flag, String msg) {return "    "+getToday("yyyy-MM-dd HH:mm:ss")+" ["+flag+"] >> "+msg+"\n";}public static void removePathPanelForFile(PathPanel pathPanel, File[] files) {if(files != null && files.length > 0) {for(File file : files) {if(file.exists() && file.getName().startsWith(pathPanel.getIndex())) {file.delete();}}}}public static File[] getPathFiles() {File file = new File(getRootPath(CommonUtil.class, "CommonUtil.class")+File.separatorChar+"cache/path");if(file != null && file.exists()) {return file.listFiles();}return null;}public static boolean downLoadFile(StringBuffer msg, FTPServerPanel serverPanel, List<PathPanel> pathList) {FTPToServer ftpToServer = new FTPToServer();boolean success = ftpToServer.connect(msg, serverPanel.getHostName1().getText()+"."+serverPanel.getHostName2().getText()+"."+serverPanel.getHostName3().getText()+"."+serverPanel.getHostName4().getText(), Integer.valueOf(serverPanel.getPort().getText()), serverPanel.getUserName().getText(), new String(serverPanel.getPassword().getPassword()));//若连接成功if(success) {//替换服务器的文件success = ftpToServer.downLoad(msg, pathList);//断开连接ftpToServer.closeConnect(msg);}return success;}public static boolean upLoadFile(StringBuffer msg, FTPServerPanel serverPanel, List<PathPanel> pathList) {FTPToServer ftpToServer = new FTPToServer();boolean success = ftpToServer.connect(msg, serverPanel.getHostName1().getText()+"."+serverPanel.getHostName2().getText()+"."+serverPanel.getHostName3().getText()+"."+serverPanel.getHostName4().getText(), Integer.valueOf(serverPanel.getPort().getText()), serverPanel.getUserName().getText(), new String(serverPanel.getPassword().getPassword()));//若连接成功if(success) {//替换服务器的文件success = ftpToServer.upLoad(msg, pathList);//断开连接ftpToServer.closeConnect(msg);}return success;}public static StringBuffer savePathInfo(List<PathPanel> pathList) {StringBuffer msg = new StringBuffer();Properties props = new Properties();FileInputStream fin = null;FileOutputStream out = null;try {String path = getRootPath(CommonUtil.class, "CommonUtil.class");path += "cache/path";File fileDir = new File(path);if(!fileDir.exists()) {fileDir.mkdirs();}File[] files = fileDir.listFiles();if(files != null && files.length > 0) {for(File file : files) {if(file.isFile()) {file.delete();}}}File file = null;for(PathPanel pathPanel : pathList) {if(!"".equals(pathPanel.getHostPath().getText().trim()) && !"".equals(pathPanel.getLocalPath().getText().trim())) {file = new File(path+File.separatorChar+pathPanel.getIndex()+".properties");if(!file.exists()) {file.createNewFile();}fin = new FileInputStream(file);out = new FileOutputStream(file);props.load(fin);props.setProperty("path.index", pathPanel.getIndex());props.setProperty("path.type", pathPanel.getPathBox().getText());props.setProperty("path.hostPath", pathPanel.getHostPath().getText());props.setProperty("path.localPath", pathPanel.getLocalPath().getText());props.store(out, pathPanel.getIndex()+".properties");fin.close();out.close();props.clear();}}} catch (Exception e) {msg.append(CommonUtil.log("ERROR", "写入路径映射信息时出现异常:"+e.toString()));} finally {try {if(fin != null) {fin.close();}if(out != null) {out.close();}props.clear();} catch (IOException e) {msg.append(CommonUtil.log("ERROR", "关闭文件输入流时出现异常:"+e.toString()));}}return msg;}public static StringBuffer saveServerInfo(FTPServerPanel serverPanel) {StringBuffer msg = new StringBuffer();Properties props = new Properties();FileInputStream fin = null;FileOutputStream out = null;try {String path = getRootPath(CommonUtil.class, "CommonUtil.class");path += "cache/server";File fileDir = new File(path);if(!fileDir.exists()) {fileDir.mkdirs();}path += File.separatorChar + "server.properties";//创建文件File file = new File(path);if(!file.exists()) {file.createNewFile();}fin = new FileInputStream(path);out = new FileOutputStream(path);props.load(fin);props.setProperty("server.hostName", serverPanel.getHostName1().getText()+"."+serverPanel.getHostName2().getText()+"."+serverPanel.getHostName3().getText()+"."+serverPanel.getHostName4().getText());props.setProperty("server.port", serverPanel.getPort().getText());props.setProperty("server.userName", serverPanel.getUserName().getText());props.setProperty("server.password", new String(serverPanel.getPassword().getPassword()));props.store(out, "server.properties");fin.close();out.close();props.clear();} catch (Exception e) {msg.append(CommonUtil.log("ERROR", "写入服务器信息时出现异常:"+e.toString()));} finally {try {if(fin != null) {fin.close();}if(out != null) {out.close();}props.clear();} catch (IOException e) {msg.append(CommonUtil.log("ERROR", "关闭文件输入流时出现异常:"+e.toString()));}}return msg;}public static StringBuffer validateInfo(FTPServerPanel serverPanel, FilePathPanel filePathPanel) {StringBuffer msg = new StringBuffer();if("".equals(serverPanel.getHostName1().getText().trim()) || "".equals(serverPanel.getHostName2().getText().trim()) || "".equals(serverPanel.getHostName3().getText().trim()) || "".equals(serverPanel.getHostName4().getText().trim())) {msg.append("主机地址未设置完整!\n");}if("".equals(serverPanel.getPort().getText().trim())) {msg.append("端口未设置!\n");}if("".equals(serverPanel.getUserName().getText().trim())) {msg.append("用户名未设置!\n");}if(filePathPanel.getPathList() != null && filePathPanel.getPathList().size() > 0) {String hostPath = null;String localPath = null;boolean setFlag = false;for(PathPanel pathPanel : filePathPanel.getPathList()) {hostPath = pathPanel.getHostPath().getText().trim();localPath = pathPanel.getLocalPath().getText().trim();if("".equals(hostPath) && !"".equals(localPath)) {msg.append(pathPanel.getPathBox().getText()+"的服务器路径未指定!\n");setFlag = true;}if(!"".equals(hostPath) && "".equals(localPath)) {msg.append(pathPanel.getPathBox().getText()+"的本地路径未指定!\n");setFlag = true;}if(!"".equals(hostPath) && !"".equals(localPath)) {setFlag = true;}}if(!setFlag) {msg.append("服务器与本地路径未指定!\n");}} else {msg.append("服务器与本地路径未指定!\n");}return msg;}public static CommonBean getPathInfo() {CommonBean commonBean = new CommonBean();Properties props = new Properties();FileInputStream fin = null;try {commonBean.getMsgBuff().append(CommonUtil.log("INFO", "从缓存文件中读取路径的配置信息..."));String path = getRootPath(CommonUtil.class, "CommonUtil.class");path += "cache/path";File fileDir = new File(path);if(!fileDir.exists()) {fileDir.mkdirs();commonBean.getMsgBuff().append(CommonUtil.log("WARN", "暂无路径映射的缓存信息!"));} else {File[] files = fileDir.listFiles();if(files != null && files.length > 0) {String value = null;PathBean pathBean = null;for(File file : files) {fin = new FileInputStream(path + File.separatorChar + file.getName());props.load(fin);pathBean = new PathBean();value = props.getProperty("path.index");if(value != null && !"".equals(value.trim())) {pathBean.setIndex(value.trim());}value = props.getProperty("path.type");if(value != null && !"".equals(value.trim())) {pathBean.setType(value.trim());}value = props.getProperty("path.hostPath");if(value != null && !"".equals(value.trim())) {pathBean.setHostPath(value.trim());}value = props.getProperty("path.localPath");if(value != null && !"".equals(value.trim())) {pathBean.setLocalPath(value.trim());}commonBean.getPathList().add(pathBean);fin.close();props.clear();}commonBean.getMsgBuff().append(CommonUtil.log("SUCCESS", "读取完成!"));} else {commonBean.getMsgBuff().append(CommonUtil.log("WARN", "暂无路径映射的缓存信息!"));}}} catch (Exception e) {commonBean.getMsgBuff().append(CommonUtil.log("ERROR", "读取路径映射信息时出现异常:"+e.toString()));} finally {try {if(fin != null) {fin.close();}props.clear();} catch (IOException e) {commonBean.getMsgBuff().append(CommonUtil.log("ERROR", "关闭文件输入流时出现异常:"+e.toString()));}}return commonBean;}public static CommonBean getServerInfo() {CommonBean commonBean = new CommonBean();Properties props = new Properties();FileInputStream fin = null;try {commonBean.getMsgBuff().append(CommonUtil.log("INFO", "从缓存文件中读取服务器的配置信息..."));String path = getRootPath(CommonUtil.class, "CommonUtil.class");path += "cache/server";File fileDir = new File(path);if(!fileDir.exists()) {fileDir.mkdirs();commonBean.getMsgBuff().append(CommonUtil.log("WARN", "暂无服务器的配置缓存信息!"));} else {path += File.separatorChar + "server.properties";//创建文件File file = new File(path);if(!file.exists()) {file.createNewFile();commonBean.getMsgBuff().append(CommonUtil.log("WARN", "暂无服务器的配置缓存信息!"));} else {fin = new FileInputStream(path);props.load(fin);String value = props.getProperty("server.hostName");if(value != null && !"".equals(value.trim())) {commonBean.setHostName(value.trim());}value = props.getProperty("server.port");if(value != null && !"".equals(value.trim())) {commonBean.setPort(value.trim());}value = props.getProperty("server.userName");if(value != null && !"".equals(value.trim())) {commonBean.setUserName(value.trim());}value = props.getProperty("server.password");if(value != null && !"".equals(value.trim())) {commonBean.setPassword(value.trim());}fin.close();props.clear();commonBean.getMsgBuff().append(CommonUtil.log("SUCCESS", "读取完成!"));}}} catch (Exception e) {commonBean.getMsgBuff().append(CommonUtil.log("ERROR", "读取服务器信息时出现异常:"+e.toString()));} finally {try {if(fin != null) {fin.close();}props.clear();} catch (IOException e) {commonBean.getMsgBuff().append(CommonUtil.log("ERROR", "关闭文件输入流时出现异常:"+e.toString()));}}return commonBean;}private static String getRootPath(Class<?> cls, String clsStr) {String result = cls.getResource(clsStr).toString();int index = result.indexOf("WEB-INF");if (index == -1) {index = result.indexOf("bin");}if (index == -1) {index = result.indexOf("lib");}if (index == -1) {index = result.indexOf(".jar!");}if(index > 0) {result = result.substring(0, index);}if(isWindows()) {index = result.lastIndexOf("/");if(index == -1) {index = result.lastIndexOf("\\");}if(index > 0) {result = result.substring(0, index);}} else {index = result.lastIndexOf("/");if(index > 0) {result = result.substring(0, index);}}if (result.startsWith("ws")) {result = result.substring(2);}if (result.startsWith("jar:file:")) {if(isWindows()){result = result.substring(10);}else{result = result.substring(9);}}if (result.startsWith("zip:")) {result = result.substring(4);}if(result.startsWith("file:")){result = result.substring(6);}return result + File.separatorChar;}/** * 判断当前操作系统是不是window *  * @return boolean */private static boolean isWindows() {boolean flag = false;if (System.getProperties().getProperty("os.name").toUpperCase().indexOf("WINDOWS") != -1) {flag = true;}return flag;}}


 

package util;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.List;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPReply;import panel.PathPanel;public class FTPToServer {private FTPClient ftpClient = null;//上传文件private BufferedInputStream buffIn = null;//下载文件private BufferedOutputStream buffOut = null;public FTPToServer() {ftpClient = new FTPClient();ftpClient.setConnectTimeout(60000);}public boolean connect(StringBuffer msg, String hostname, int port, String userName, String password) {boolean success = true;try {msg.append(CommonUtil.log("INFO", "正在尝试连接服务器..."));ftpClient.connect(hostname, port);int reply = ftpClient.getReplyCode();msg.append(CommonUtil.log("INFO", "返回码:【"+reply+"】"));if (!FTPReply.isPositiveCompletion(reply)) {ftpClient.disconnect();msg.append(CommonUtil.log("ERROR", "服务器拒绝连接!"));success = false;} else {msg.append(CommonUtil.log("INFO", "正在尝试登录服务器..."));success = ftpClient.login(userName, password);if(success) {msg.append(CommonUtil.log("SUCCESS", "登录服务器成功!"));ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);} else {msg.append(CommonUtil.log("ERROR", "登录的用户名或者密码不正确!"));}}} catch (Exception e) {success = false;msg.append(CommonUtil.log("ERROR", "连接服务器时出现异常:"+e.toString()));}return success;}public boolean upLoad(StringBuffer msg, List<PathPanel> pathList) {boolean success = true;try {File localDir = null;for(PathPanel pPanel : pathList) {localDir = new File(pPanel.getLocalPath().getText());ftpClient.changeWorkingDirectory(pPanel.getHostPath().getText());if(localDir != null && localDir.exists() && localDir.isDirectory()) {upLoadFolder(localDir);msg.append(CommonUtil.log("SUCCESS", "路径:"+pPanel.getLocalPath().getText()+",替换本地文件至服务器成功!"));} else {success = false;msg.append(CommonUtil.log("WARN", "路径:"+pPanel.getLocalPath().getText()+",无效!"));}}} catch (Exception e) {success = false;msg.append(CommonUtil.log("ERROR", "替换本地文件至服务器时出现异常:"+e.toString()));} finally {try{if(buffIn != null) {buffIn.close();}} catch (Exception e){success = false;msg.append(CommonUtil.log("ERROR", "关闭文件输入流时出现异常:"+e.toString()));}}return success;}public boolean downLoad(StringBuffer msg, List<PathPanel> pathList) {boolean success = true;try {File file = null;for(PathPanel pPanel : pathList) {ftpClient.changeWorkingDirectory(pPanel.getHostPath().getText());file = new File(pPanel.getLocalPath().getText());if(file != null && file.exists() && file.isDirectory()) {//备份一份downLoadFolder(pPanel.getLocalPath().getText()+File.separatorChar+"bak");//下载一份用于修改downLoadFolder(pPanel.getLocalPath().getText());msg.append(CommonUtil.log("SUCCESS", "路径:"+pPanel.getHostPath().getText()+",已下载至本地!"));} else {success = false;msg.append(CommonUtil.log("WARN", "路径:"+pPanel.getHostPath().getText()+",无效!"));}}} catch (Exception e) {success = false;msg.append(CommonUtil.log("ERROR", "下载服务器文件至本地时出现异常:"+e.toString()));} finally {try{if(buffOut != null) {buffOut.close();}} catch (Exception e){success = false;msg.append(CommonUtil.log("ERROR", "关闭文件输入流时出现异常:"+e.toString()));}}return success;}public void closeConnect(StringBuffer msg){try{if(ftpClient!=null){ftpClient.logout();msg.append(CommonUtil.log("SUCCESS", "登出服务器成功!"));ftpClient.disconnect();msg.append(CommonUtil.log("SUCCESS", "断开服务器连接成功!"));}}catch(Exception e){msg.append(CommonUtil.log("ERROR", "断开连接服务器时出现异常:"+e.toString()));}}private void upLoadFolder(File folder) throws Exception {File[] files = folder.listFiles();if(files != null && files.length > 0) {for(File file : files) {if(file.exists()) {if(file.isDirectory() && !"bak".equalsIgnoreCase(file.getName())) {ftpClient.makeDirectory(file.getName());ftpClient.changeWorkingDirectory(file.getName());upLoadFolder(file);ftpClient.changeToParentDirectory();} else {buffIn = new BufferedInputStream(new FileInputStream(file));ftpClient.storeFile(new String(file.getName().getBytes("GBK"),"iso-8859-1"), buffIn);buffIn.close();}}}}}private void downLoadFolder(String localDir) throws Exception {File tempFile = new File(localDir);if(!tempFile.exists()) {tempFile.mkdir();}FTPFile[] hostFiles = ftpClient.listFiles();if(hostFiles != null && hostFiles.length > 0) {File localFile = null;String localDirTemp = null;for(FTPFile file : hostFiles) {localDirTemp = localDir+File.separatorChar+file.getName();if(file.isDirectory()) {localFile = new File(localDirTemp);if(!(localFile != null && localFile.exists())) {localFile.mkdir();}ftpClient.changeWorkingDirectory(file.getName());downLoadFolder(localDirTemp);ftpClient.changeToParentDirectory();} else {buffOut = new BufferedOutputStream(new FileOutputStream(localDirTemp));ftpClient.retrieveFile(file.getName(), buffOut);buffOut.close();}}}}}


 

0 0