当前位置: 首页 > 知识库问答 >
问题:

从FTP服务器检索Java文件

孔磊
2023-03-14

我正试图从ftp服务器检索一个文件,但我得到如下错误。请你帮帮我好吗

导入java.io.BufferedOutputStream;

导入java.io.file;

导入java.io.FileOutputStream;

导入java.io.IOException;

导入java.io.InputStream;

导入java.io.OutputStream;

导入java.text.DateFormat;

导入java.text.SimpleDateFormat;

导入org.apache.commons.net.ftp.ftp;

导入org.apache.commons.net.ftp.ftpclient;

导入org.apache.commons.net.ftp.ftpfile;

导入org.apache.commons.net.ftp.ftpreply;

公共类FtpTest_V1{

public static void main(String[]args){

    String server = "192.168.200.8";

    int port = 21;

    String user = "Test_user";

    String pass = "123456**";

    FileOutputStream fos = null; 

   FTPClient ftpClient = new FTPClient();

   try {

          ftpClient.connect(server, port);

          showServerReply(ftpClient);

          ftpClient.enterLocalPassiveMode();


          int replyCode = ftpClient.getReplyCode();

          System.out.println(replyCode);


          //isPositiveCompletion

          if (!FTPReply.isPositiveCompletion(replyCode)) {

              System.out.println(FTPReply.isPositiveCompletion(replyCode));

              System.out.println(FTPReply.isNegativeTransient(replyCode));

              System.out.println("Connect failed");

              return;

          }

          boolean success = ftpClient.login(user, pass);

          //System.out.println(success);

          showServerReply(ftpClient);     

          if (!success) {

              System.out.println("Could not login to the server");

              return;

          }

          // Lists files and directories

          FTPFile[] files1 = ftpClient.listFiles("TEST2");

          //printFileDetails(files1);                      

          // uses simpler methods

          String[] files2 = ftpClient.listNames("TEST2");

         printNames(files2);

         String[] files = files2;

         for (String aFile: files) {

         String filename = aFile; 

         fos = new FileOutputStream(filename); 

    // Download file from FTP server

   ftpClient.retrieveFile("C://test//FTP_TEST//GET" + filename, >fos); 

          }              

      }       

        catch (IOException ex) {

          System.out.println("An Error Occured"+ex.getMessage());

          System.out.println("Warning! Something wrong happened");

          ex.printStackTrace();

      } finally {

          // logs out and disconnects from server

          try {

              if (fos != null) { 

                  fos.close(); 

                }  

              if (ftpClient.isConnected()) {

                  ftpClient.logout();

                  ftpClient.disconnect();

              }

          } catch (IOException ex) {

              ex.printStackTrace();

          }

      }

  }

  private static void printNames(String files[]) {

      if (files != null && files.length > 0) {

          int i =0;

          for (String aFile: files) {

               i++;

          }

          System.out.println("Number of files = "+i);

          for (String aFile: files) {

              System.out.println(aFile);

          }

      }
  }

  private static void showServerReply(FTPClient ftpClient) {

      String[] replies = ftpClient.getReplyStrings();

      if (replies != null && replies.length > 0) {

          for (String aReply : replies) {

              System.out.println("SERVER : " + aReply);

          }

      }    

服务器:220-Filezilla SERVER版本0.9.43测试版

服务器:220 Hello FTP服务器

220

test2/testfile.csv

test2/tttt.csv

错误OccurredTest2\testFile.csv(系统找不到指定的路径)

警告!出事了

java.io.FileNotFoundException:test2\testfile.csv(系统找不到指定的路径)

在java.io.FileOutputStream.Open(本机方法)

在java.io.FileOutputStream.(未知源)

在ftptest_v1.main(ftptest_v1.java:74)

共有1个答案

益明朗
2023-03-14

斜杠应该像这样向后:“C:\\test\\ftp_test\\get”(没有中间空格,我这样说是因为这个页面中的html解析器将其改为只有一个斜杠)

ftpClient.retrieveFile("C://test//FTP_TEST//GET" + filename, >fos); 

或者更好:

"C:" + File.separatorChar + "test" + File.separatorChar + "FTP_TEST" + File.separatorChar + "GET"
 类似资料:
  • 我正在写一个涉及多个客户的应用程序。一个客户端使用FTP将文件上传到服务器,然后另一个客户端下载并删除该文件。我使用FTP服务器作为一种中间人来交换信息,因为我不希望用户必须向前移植。我已经知道如何上传文件,但我不知道如何删除文件。使用FTP删除文件的命令是: 我试过这么做,但没有成功。以下是我尝试过的代码: 我有一种感觉 我在这个网站上读到了关于类似问题的其他问题,所有的回答都告诉我使用图书馆。

  • 问题内容: 我正在尝试使用Java从使用SFTP(而不是FTPS)的服务器检索文件。我怎样才能做到这一点? 问题答案: 另一个选择是考虑查看JSch库。JSch似乎是一些大型开源项目的首选库,其中包括Eclipse,Ant和Apache Commons HttpClient。 它很好地支持用户/通过和基于证书的登录,以及所有其他许多美味的SSH2功能。 这是通过SFTP检索的简单远程文件。错误处理

  • 我正试图下载一些公共数据文件。我通过screensrap获取指向文件的链接,这些文件看起来都是这样的: 我在Requests library网站上找不到任何文档。

  • 我必须从FTP服务器下载最新文件。我知道如何从我的计算机下载最新文件,但我不知道如何从FTP服务器下载。 如何从FTP服务器下载最新文件? 这是我从电脑上下载最新文件的程序 好的,使用此代码我知道最后一个文件的日期,但我如何知道这个文件的名称?????????

  • 问题内容: 我正在尝试编写一个代码,以在我的独立服务器上打开FTP服务器,以便可以将文件从FTP服务器复制到另一台计算机上的客户端,反之亦然。 我得到了Apache FtpServer,但对其使用感到有些困惑,并且正在寻找使用它的基本步骤。也许像这样: 做连接命令 登录 做一些事情… 问题答案: 让我使用非常有用的 Apache FtpServer 为您编写一个基本示例: 请注意,在服务器端,您不

  • 我正在尝试将大量文件从服务器A传输到服务器B。我已经在A上设置了FTP(使用FileZilla)。 当我尝试从PC连接到A时,它工作正常。但当我尝试从B连接到A时,它不起作用。FTP用户登录,但目录列表命令一直处于停滞状态。 防火墙端口21已打开。我尝试了多台服务器、不同的FTP客户端,但没有用。除了FileZilla,我还尝试了内置FTP服务的ISS,得到了相同的结果。 使用相同凭据从本地完美连