用win8电脑写java的ftp程序遇到的一些问题

1.搭建ftp环境遇到的问题:

刚开始在网上搜到一些方法,但是由于是win8的电脑,并没有看到预想中的sII网络管理和用户分组管理,后来经过搜索,在 控制面板-所有控制面板项-程序和功能-启用或关闭功能

中找到.Net Framwork3.5和勾选上了以下选项,解决了IIS问题。

2.打开IIS管理器后,然后根据网上的方法建立站点,将自动启动站点,然后要添加FTP发布,ip地址选择下拉框中的ip,默认端口就行了,按照下面方式选择。

3.添加FTP授权规则,可以指定现有用户,也可以先去添加用户

4.打开eclipse或者eclipse,导入jar包commons-net-ftp-2.0.jar

  1 package com.oyz.util;
  2
  3 import java.io.File;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 import java.io.InputStream;
  7 import java.io.OutputStream;
  8 //import java.io.ByteArrayInputStream;
  9 //import java.io.UnsupportedEncodingException;
 10
 11 import org.apache.commons.net.ftp.FTPClient;
 12 import org.apache.commons.net.ftp.FTPFile;
 13 import org.apache.commons.net.ftp.FTPReply;
 14 /**
 15  * FTP文件上传下载工具类
 16  * 注意:若文件路径不存在,则会创建路径
 17  * @author oyz
 18  *
 19  */
 20 public class FTP {
 21     /**
 22      * FTP公共信息
 23      * @author lenovo CHN
 24      *
 25      */
 26     public class FTPInform{
 27         public String url;
 28         public  int port;
 29         public String username;
 30         public String password;
 31     }
 32
 33     private FTPInform ftpInfo;
 34     /**
 35      * 构造函数
 36      * @param ftpInfo ftp信息头
 37      */
 38     public FTP(FTPInform ftpInfo) {
 39         setFtpInfo(ftpInfo);
 40     }
 41     /**
 42      * 构造函数
 43      * @param url FTP服务器ip
 44      * @param port FTP服务器端口
 45      * @param username FTP登录账号
 46      * @param password FTP登录密码
 47      */
 48     public FTP(String url,int port,String username,String password) {
 49         FTPInform ftpInfo=new FTPInform();
 50         ftpInfo.url=url;
 51         ftpInfo.port=port;
 52         ftpInfo.username=username;
 53         ftpInfo.password=password;
 54         setFtpInfo(ftpInfo);
 55     }
 56
 57     public FTPInform getFtpInfo() {
 58         return ftpInfo;
 59     }
 60     public void setFtpInfo(FTPInform ftpInfo) {
 61         this.ftpInfo = ftpInfo;
 62     }
 63
 64     public boolean downFile(String remotePath,String fileName,String localPath){
 65         FTPInform ftpInfo0=getFtpInfo();
 66         return downFile(ftpInfo0.url,ftpInfo0.port,ftpInfo0.username,ftpInfo0.password,remotePath,fileName,localPath);
 67     }
 68     public boolean uploadFile(String remotePath,String fileName,InputStream in){
 69         FTPInform ftpInfo0=getFtpInfo();
 70         return uploadFile(ftpInfo0.url,ftpInfo0.port,ftpInfo0.username,ftpInfo0.password,remotePath,fileName,in);
 71     }
 72     /**
 73     * Description: 从FTP服务器下载文件
 74     * @Version1.0
 75     * @param url FTP服务器ip
 76     * @param port FTP服务器端口
 77     * @param username FTP登录账号
 78     * @param password FTP登录密码
 79     * @param remotePath FTP服务器上的相对路径
 80     * @param fileName 要下载的文件名
 81     * @param localPath 下载后保存到本地的路径
 82     * @return
 83     */
 84
 85     public static boolean downFile(String url, int port,String username, String password, String remotePath,String fileName,String localPath) {
 86         boolean success = false;
 87         FTPClient ftp = new FTPClient();
 88         File f=new File(localPath);
 89         if((!f.exists())&&localPath.indexOf(‘.‘)<0){
 90             f.mkdir();
 91         }
 92         try {
 93             int reply;
 94             ftp.connect(url, port);
 95             //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
 96             ftp.login(username, password);//登录
 97             reply = ftp.getReplyCode();
 98             if (!FTPReply.isPositiveCompletion(reply)) {
 99                 ftp.disconnect();
100                 return success;
101             }
102             ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
103             FTPFile[] fs = ftp.listFiles();
104             for(FTPFile ff:fs){
105                 if(ff.getName().equals(fileName)){
106                     File localFile = new File(localPath+"/"+ff.getName());
107
108                     OutputStream is = new FileOutputStream(localFile);
109                     ftp.retrieveFile(ff.getName(), is);
110                     is.close();
111                 }
112             }
113
114             ftp.logout();
115             success = true;
116         } catch (IOException e) {
117             e.printStackTrace();
118         } finally {
119             if (ftp.isConnected()) {
120                 try {
121                     ftp.disconnect();
122                 } catch (IOException ioe) {
123                     ioe.printStackTrace();
124                 }
125             }
126         }
127         return success;
128     }
129     /**
130     * Description: 向FTP服务器上传文件
131     * @Version1.0([email protected])创建
132     * @param url FTP服务器hostname
133     * @param port FTP服务器端口
134     * @param username FTP登录账号
135     * @param password FTP登录密码
136     * @param path FTP服务器保存目录
137     * @param filename 上传到FTP服务器上的文件名
138     * @param input 输入流
139     * @return 成功返回true,否则返回false
140     */
141     public static boolean uploadFile(String url,int port,String username, String password, String path, String filename, InputStream input) {
142         boolean success = false;
143         FTPClient ftp = new FTPClient();
144         try {
145             int reply;
146             ftp.connect(url, port);//连接FTP服务器
147             //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
148             ftp.login(username, password);//登录
149             reply = ftp.getReplyCode();
150             if (!FTPReply.isPositiveCompletion(reply)) {
151                 ftp.disconnect();
152                 return success;
153             }
154             boolean k=ftp.changeWorkingDirectory(path);
155             if(!k){
156                 ftp.makeDirectory(path);
157                 k=ftp.changeWorkingDirectory(path);
158             }
159             ftp.storeFile(filename, input);
160
161             input.close();
162             ftp.logout();
163             success = true;
164         } catch (IOException e) {
165             e.printStackTrace();
166         }catch (Exception e) {
167             e.printStackTrace();
168         }
169         finally {
170             if (ftp.isConnected()) {
171                 try {
172                     ftp.disconnect();
173                 } catch (IOException ioe) {
174                 }
175             }
176         }
177         return success;
178     }
179 //    public static void main(String[] args) {
180 //        FTP ftp=new FTP("*.*.*.*", 21, "name", "pwd");
181 //
182 ////
183 ////        ftp.downFile("./zs","test.txt","F://z");
184 //
185 //        try {
186 //            InputStream input = new ByteArrayInputStream("test ftp".getBytes("utf-8"));
187 //            boolean flag = ftp.uploadFile("./zz", "tes2.txt", input);
188 //            System.out.println(flag);
189 //        } catch (UnsupportedEncodingException e) {
190 //            e.printStackTrace();
191 //        }
192 //    }
193 }

然后运行调试一下就ok了,但是如果要让其他电脑使用ftp,则可能需要关闭防火墙才行。

时间: 2024-12-22 20:43:08

用win8电脑写java的ftp程序遇到的一些问题的相关文章

通过socketserver模块写一个简单ftp程序

需求 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp server上随意切换目录 (cd) 允许用户查看当前目录下文件 (ls) 允许上传和下载文件,保证文件一致性(get put) 文件传输过程中显示进度条 支持文件的断点续传 分析

细思极恐-你真的会写java吗?

文章核心 其实,本不想把标题写的那么恐怖,只是发现很多人干了几年java以后,都自认为是一个不错的java程序员了,可以拿着上万的工资都处宣扬自己了,写这篇文章的目的并不是嘲讽和我一样做java的同行们,只是希望读者看到此篇文章后,可以和我一样,心平气和的争取做一个优秀的程序员. 讲述方向 由于一直从事移动互联网相关工作,java开发中经常和移动端打交道或者做一些后端的工作,所以本篇文章更可能涉及和移动端的交互或者与后端的交互方式,笔者希望以自身的一些学习经验或者开发经验,可以带动认真阅读本篇文

细思极恐-你真的会写java吗?

文章核心 其实,本不想把标题写的那么恐怖,只是发现很多人干了几年java以后,都自认为是一个不错的java程序员了,可以拿着上万的工资都处宣扬自己了,写这篇文章的目的并不是嘲讽和我一样做java的同行们,只是希望读者看到此篇文章后,可以和我一样,心平气和的争取做一个优秀的程序员.java学习群669823128 讲述方向 由于一直从事移动互联网相关工作,java开发中经常和移动端打交道或者做一些后端的工作,所以本篇文章更可能涉及和移动端的交互或者与后端的交互方式,笔者希望以自身的一些学习经验或者

恕我直言,在座的各位根本不会写 Java!

导语 自 2013 年毕业后,今年已经是我工作的第 4 个年头了,总在做 Java 相关的工作,终于有时间坐下来,写一篇关于 Java 写法的一篇文章,来探讨一下如果你真的是一个 Java 程序员,那你真的会写 Java 吗? 笔者是一个务实的程序员,故本文绝非扯淡文章,文中内容都是干货,望读者看后,能有所收获. 文章核心 其实,本不想把标题写的那么恐怖,只是发现很多人干了几年 Java 以后,都自认为是一个不错的 Java 程序员了,可以拿着上万的工资都处宣扬自己了,写这篇文章的目的并不是嘲讽

对不起,我不是针对你,我是说在座的各位都不会写 Java!

技术点 本文不是一个吹嘘的文章,不会讲很多高深的架构,相反,会讲解很多基础的问题和写法问题,如果读者自认为基础问题和写法问题都是不是问题,那请忽略这篇文章,节省出时间去做一些有意义的事情. 开发工具 不知道有多少"老"程序员还在使用 Eclipse,这些程序员们要不就是因循守旧,要不就是根本就不知道其他好的开发工具的存在,Eclipse 吃内存卡顿的现象以及各种偶然莫名异常的出现,都告知我们是时候寻找新的开发工具了. 更换 IDE 根本就不想多解释要换什么样的 IDE,如果你想成为一个

写Java程序让Jvm崩溃

package jvm; public class HeapCrash { public static void main(String[] args) { //Object[] o = {“abc”};初始值赋值,不会有影响. Object[] o = null; while (true) { o = new Object[] { o }; //输出的话,jvm就不会崩溃. //System.out.println(o); } } } 输出: Exception in thread "main

代写java程序qq:928900200

学校为全面提升学校教学质量,提高管理水平,决定开发一套小型成绩管理系统,实现以下功能.1)   系统用户分为管理员.教师和学生三种角色,每种角色都可以包含若干个用户.其中管理员登录后可以进行教师.学生和课程管理.2)   系统能够管理教师,进行增加,删除,编辑,查询.教师包含教师号.姓名.学院.职称.年龄等信息.3)   系统能够管理学生,进行增加,删除,编辑,查询.学生包含学号.姓名.学院.专业.班级等信息.4)   系统能够管理课程,进行增加,删除,编辑,查询.课程包含课程号.名称.任课教师

对于eclipse写java程序时,想查看一下java源代码,出现Source not found 的原因与解决办法

对于eclipse写java程序时,想查看一下java源代码,出现Source not found 如下图: 原因Eclipse默认设定的自带的JDK是没有源src的,需要引入,点击attach Source...添加jdk的src.zip就可以了

Java程序代写代做|代写JAVA代码|帮做java编程: Control Flow Oriented Coverage Test Procedures

Task: Control Flow Oriented Coverage Test ProceduresIn the so-called branch coverage test, the test case quantity for a Program P be compiled so that each edge of the control flow graph of P (see, for example, Fig. 1: You already know an equivalent r