jdk1.7实现ftp上传文件
2016-09-01 00:27
399 查看
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import sun.net.TelnetInputStream; import sun.net.TelnetOutputStream; import sun.net.ftp.FtpClient; import sun.net.ftp.FtpProtocolException; public class FtpUtil { private String localfilename; private String remotefilename; private FtpClient ftpClient; public void connectServer(String ip, int port, String user, String password, String path) throws FtpProtocolException{ try { ftpClient = FtpClient.create(); try { SocketAddress addr = new InetSocketAddress(ip, port); ftpClient.connect(addr); ftpClient.login(user, password.toCharArray()); System.out.println("login success!"); if (path.length() != 0) { // 把远程系统上的目录切换到参数path所指定的目录 ftpClient.changeDirectory(path); } } catch (FtpProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (IOException ex) { ex.printStackTrace(); throw new RuntimeException(ex); } } public void closeConnect() { try { ftpClient.close(); System.out.println("disconnect success"); } catch (IOException ex) { System.out.println("not disconnect"); ex.printStackTrace(); throw new RuntimeException(ex); } } public boolean upload(String localFile, String remoteFile) throws FtpProtocolException { this.localfilename = localFile; this.remotefilename = remoteFile; OutputStream os = null; FileInputStream is = null; boolean flage = false; try { // 将远程文件加入输出流中 os = (OutputStream) ftpClient.putFileStream(this.remotefilename, true); // 获取本地文件的输入流 File file_in = new File(this.localfilename); is = new FileInputStream(file_in); // 创建一个缓冲区 byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); } System.out.println("upload success"); flage = true; // return true; } catch (IOException ex) { System.out.println("not upload"); ex.printStackTrace(); flage = false; throw new RuntimeException(ex); } finally { try { if (is != null) { is.close(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (os != null) { os.close(); } } catch (IOException e) { e.printStackTrace(); } } } return flage; } public void download(String remoteFile, String localFile) throws FtpProtocolException{ TelnetInputStream is = null; FileOutputStream os = null; try { // 获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。 is = (TelnetInputStream) ftpClient.getFileStream(remoteFile); File file_in = new File(localFile); os = new FileOutputStream(file_in); byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); } System.out.println("download success"); } catch (IOException ex){ System.out.println("not download"); ex.printStackTrace(); throw new RuntimeException(ex); } finally{ try{ if (is != null) { is.close(); } }catch (IOException e){ e.printStackTrace(); } finally{ try{ if (os != null) { os.close(); } } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String agrs[]) { String filepath[] ={ "/aa.txt", "/regist.log" }; String localfilepath[] ={ "C:\\tmp\\1.txt", "C:\\tmp\\2.log" }; FtpUtil ftp = new FtpUtil(); try { ftp.connectServer(ftp的地址, 端口, 用户名, 密码, 路径); } catch (FtpProtocolException e) { e.printStackTrace(); } // 下载 String localfile = "D:/ceshi.jpg"; String remotefile = ftp上传路径"/javaftp测试.jpg"; // 上传 try { ftp.upload(localfile, remotefile); } catch (FtpProtocolException e) { e.printStackTrace(); } ftp.closeConnect(); } }
相关文章推荐
- php实现通过ftp上传文件
- Ftp上传文件
- asp.net通过ftp路径上传和下载文件
- 从FTP服务器下载文件部署更新linux服务器上的服务
- FileZilla上传文件到外网FTP服务器响应:550 Permission denied.
- java 利用集合实现斗地主算法
- java.util.Vector
- Java垃圾回收机制
- 【spring】AOP注解实现
- java打包遇到问题java.io.IOException: invalid header field
- "Calendars" and "DateFormats" should not be static
- eclipse中Java连接sql server数据库
- java基础十[包、Jar存档文件和部署](阅读Head First Java记录)
- Spring源码阅读(2)- bean解析初体验
- 单向链表的插入排序
- Java Socket实现文件传输示例代码
- Java设计模式之享元模式
- Java 容器相关知识全面总结
- 从一个简单的Java单例示例谈谈并发
- 你真的了解一段Java程序的生命史吗