`
mwei
  • 浏览: 123988 次
  • 性别: Icon_minigender_1
  • 来自: 抽象空间
社区版块
存档分类
最新评论

转:java 获取ftp文件大小

    博客分类:
  • java
阅读更多
【注】:本代码摘自 http://www.java2s.com
keyword:Ftp client gets server file size

import java.io.IOException;
import java.util.StringTokenizer;

import sun.net.TelnetInputStream;
import sun.net.ftp.FtpClient;

public class FtpGetFileSizeDemo {
  public static int BUFFER_SIZE = 10240;

  private FtpClient m_client;

  private String host = "";

  private String user = "";

  private String password = "";

  private String sDir = "";

  public FtpGetFileSizeDemo() {
    try {
      System.out.println("Connecting to host " + host);
      m_client = new FtpClient(host);
      m_client.login(user, password);
      System.out.println("User " + user + " login OK");
      System.out.println(m_client.welcomeMsg);
      m_client.cd(sDir);
      System.out.println("Directory: " + sDir);
      m_client.binary();
      System.out.println("Success.");
    } catch (Exception ex) {
      System.out.println("Error: " + ex.toString());
    }
  }

  protected void disconnect() {
    if (m_client != null) {
      try {
        m_client.closeServer();
      } catch (IOException ex) {
      }
      m_client = null;
    }
  }

  public static int getFileSize(FtpClient client, String fileName)
      throws IOException {
    TelnetInputStream lst = client.list();
    String str = "";
    fileName = fileName.toLowerCase();
    while (true) {
      int c = lst.read();
      char ch = (char) c;
      if (c < 0 || ch == '\n') {
        str = str.toLowerCase();
        if (str.indexOf(fileName) >= 0) {
          StringTokenizer tk = new StringTokenizer(str);
          int index = 0;
          while (tk.hasMoreTokens()) {
            String token = tk.nextToken();
            if (index == 4)
              try {
                return Integer.parseInt(token);
              } catch (NumberFormatException ex) {
                return -1;
              }
            index++;
          }
        }
        str = "";
      }
      if (c <= 0)
        break;
      str += ch;
    }
    return -1;
  }

}

后来发现不能获得ftp里中文文件的大小,解决办法:
调用getFileSize() 之前先编解码,然后调用getFileSize,就O了,如:
fileName=new String(fileName.getBytes("GBK"),"ISO8859-1");
而不是在第50行 (fileName = fileName.toLowerCase(); )之后去调用fileName=new String(fileName.getBytes("GBK"),"ISO8859-1");




分享到:
评论

相关推荐

    获取ftp服务器文件的大小

    ### 获取FTP服务器文件大小的知识点解析 在进行网络文件传输时,经常需要了解远程文件的大小,以便于更好地控制文件的下载进度或者进行其他相关的管理操作。本文将围绕“获取FTP服务器文件的大小”这一主题展开,...

    获取FTP服务器上的文件大小源码

    本篇文章将详细讲解如何编写源码来获取FTP服务器上的文件大小,这对于监控服务器存储空间或者自动化任务是非常实用的。 首先,我们需要了解基本的FTP工作原理。FTP基于TCP/IP协议,通过建立控制连接和数据连接来...

    FTP中获取文件大小

    4. 获取文件大小: ```java long fileSize = ftpClient.listFiles("filename")[0].getSize(); ``` 5. 最后,断开连接: ```java ftpClient.logout(); ftpClient.disconnect(); ``` 注意,`listFiles()`方法返回一个...

    java工具类 ftp 文件比较 socket http

    例如,`java.io.File`类可以获取文件的基本信息,通过比较文件大小和修改时间进行初步判断。对于内容比较,可以使用`java.nio.file.Files`的`readAllBytes()`方法读取文件内容,然后进行字节对齐比较。如果文件较大...

    Java获取文件夹大小、文件大小,文件个数

    System.out.println("文件大小:" + g.FormetFileSize(fileSizes)); } catch (Exception e) { e.printStackTrace(); } } ``` Java 获取文件夹大小、文件大小、文件个数可以通过使用 File 类和递归方法来实现。...

    java大文件上传至ftp服务器带进度条显示的

    在Java中,我们可以使用`java.net`或`org.apache.commons.net`库来实现FTP文件上传。Apache Commons Net库提供了丰富的FTP功能,包括文件上传、下载、目录管理等,同时它也支持断点续传,对于大文件上传非常实用。 ...

    java ftp断点上传和下载

    FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。断点续传是FTP的一个重要特性,允许用户在文件...了解这些知识点将使你能够高效地实现在Java环境中进行FTP文件的断点续传操作。

    java zip rar(区分有无密码的RAR文件) gz ftp工具类

    总结起来,这个项目提供了Java环境下的压缩和解压缩功能,包括ZIP、RAR(带密码)和GZ格式,以及FTP文件传输的实用工具类。开发者可以轻松地集成这些功能到他们的项目中,提高文件处理的便捷性。

    FTPUpload上传文件 进度条显示进度

    下面将详细讲解如何使用Java的Swing库创建一个带有进度条的FTP文件上传功能。 首先,我们需要理解FTP的基本原理。FTP是一种用于在Internet上进行文件传输的标准协议。Java提供了一个内置的`java.net.FTPClient`类,...

    java登录FTP下载文件,支持断点下载

    在Java编程环境中,FTP(File Transfer Protocol)文件下载是一个常见的任务,特别是在处理大量数据传输时。本场景中,我们关注的重点是如何实现一个功能完善的FTP下载工具,它支持断点续传,即当下载中断后可以从...

    java实现ftp的所有操作

    在下载或上传文件前,需要检查本地是否有已部分传输的文件,并获取其大小作为重传的起始偏移量。 6. **错误处理与资源释放**: 在完成所有FTP操作后,必须正确关闭连接和释放资源。使用`FTPClient`的`disconnect()...

    ftp.zip_ftp_java ftp_java 文件传输_文件传输

    本资料包提供了一个简单的FTP Java源代码示例,帮助开发者理解和应用FTP文件传输。 在Java中,通常使用`java.net`和`java.io`库来实现FTP功能。`java.net.Socket`类用于创建网络连接,而`java.io`则处理输入和输出...

    xuchuanftp_java_FTP断点续传_

    3. **获取文件信息**:在开始上传前,需要检查服务器上目标文件是否存在,如果存在则获取其当前大小,这将作为断点续传的起点。 4. **设置传输模式**:为了实现断点续传,需要将FTP传输模式设置为二进制模式...

    java实现FTP客户端

    Java 实现FTP客户端是网络编程中的一个重要话题,FTP(File Transfer Protocol)协议是用于在网络上...不过,实际应用中可能还需要考虑更多细节,如错误重试策略、多线程下载、文件大小检测等,以提高效率和稳定性。

    java实现FTP断点续传

    - 获取文件大小:`FTPClient.listFiles()`,根据返回的列表找到目标文件的大小。 - 设置续传位置:`FTPClient.setRestartOffset(lastTransferredBytes)`。 - 开始续传:使用`retrieveFile()`或`storeFile()`。 6...

    用于FTP文件传输的命令追踪

    Apache Log4j是Java日志记录框架,它提供了灵活的日志记录控制,有助于调试和追踪FTP文件传输过程中的问题。 在Java中使用`common-net`进行FTP文件传输时,主要涉及以下知识点: 1. **FTPClient类**:这是`common-...

    Java常用FTP文件操作说明Apache.FTPClient,ftp4j,jftp.pdf

    总的来说,Apache.FTPClient库提供了一套完整的FTP文件操作解决方案,使得开发者能够在Java应用程序中方便地处理FTP任务。通过封装和抽象,可以创建类似`FTPCommon`这样的类,将FTP操作封装成易于使用的服务,简化...

    java ftp 上传 下载 断点续传

    Java FTP(File Transfer Protocol)是Java编程中用于与FTP服务器交互的一种技术,它允许程序员编写应用程序来上传、下载文件,并实现断点续传功能。在本文中,我们将深入探讨Java FTP上传、下载以及断点续传的核心...

    java FTP断续上传与下载

    下载的处理方式类似,首先使用`listFiles()`获取文件列表,然后检查目标文件是否存在于本地,如果存在,通过`setRestartOffset()`设置本地文件的大小作为新的开始点。接着,调用`retrieveFile()`方法从服务器下载,...

Global site tag (gtag.js) - Google Analytics