`
rain_2372
  • 浏览: 684202 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA+Ftpclient操作

    博客分类:
  • java
阅读更多
最近再做个ftp上传、下载的项目,用到的包是sun.net.ftp.FtpClient。本地开发测试一切正常,放到服

务器测试,程序开始 。无奈之下,只能逐步输出日志,查找原因,现做个小结。
本地的开发环境是win7+jdk1.5,另本地搭建一个ftp服务器,软件使用的是serv_U。
服务器上的环境是linux+jdk1.5.

经过分析发现,linux环境与win环境的ftp操作有以下差别:
1、文件中的数据回车换行符不同
win的回车换行时:/r/n
linux的回车换行是:/n
解决办法是:
1)由于unix和windows系统参数的差别,故不使用硬编码进行换行,通过使用System.getProperties

("line.separator");获取换行符
2)也可通过使用out.newLine();实现

2、ftp的根路径不同
加入:ftp用户名:user,密码:11111
根目录:win:c://upload;linux:/data/upload
子目录:win:c://upload/abc;linux:/data/upload/abc
win系统中,以ftp的用户名和密码登陆后,可直接进入cd(/abc),即可进入到abc目录
但是,在linux系统中,以ftp的用户名和密码登陆后,需要cd完整的路径才可以进入目录,即:cd(/data

/upload/abc),不可使用cd(/abc)。

所以,要注意linux系统的文件操作时要完整的绝对路径,而不能使用相对路径。
3、问题总结:
由该问题可延伸至操作系统常用参数的差别,如:
line.separator(windows:"/r/n";unix:"/n");
file.separator(windows:"/";unix:"/");
path.separator(windows:";";unix:":");

4、 FTP的ASCII和Binary两种传输方式有何不同

    ASCII模式和Binary模式的区别是回车换行的处理,Binary模式不对数据进行任何处理,ASCII模式将

回车换行转换为本机的回车字符,比如:UNIX下是/n,Windows下是/r/n,Mac下是/r。
    ASCII模式下会转换文件,不能说是不同系统对回车换行解释不同,而是不同的系统有不同的行结束符

。UNIX系统下行结束符是一个字节,即十六进制的0A,而Windows的系统是两个字节,即十六进制的0D0A,

所以当你用ASCII方式从UNIX的FTP Server下载文件到Windows系统上时(不管是二进制或者文本文件),每

检测到一个字节是0A,就会自动插入一个0D,所以如果你的文件是二进制文件,比如可执行文件、压缩包

什么的,就肯定不能用了。如果你的文件就是UNIX下的文本文件,你用ASCII模式是正确的,要是误用了

Binary模式,你在Windows上看这个文件是没有换行的,里面是一个个的黑方块,也就是当你的文件是文本

文件时,建议使用ASCII模式,这样可以使用得不同的平台传上去的文件到另一平台时能正确显示换行情况

,而对于可执行文件或压缩文件等其它非文本文件,最好用Binary方式,因为这个传上去的和本机的一模

一样,只要你在同一个平台上就可以打开它,或都你将你的FTP服务器放在UNIX平台上,而用户使用

windows平台,那么上传上去的非文本文件,用户只要下载到windows平台一般就可以打开它。
    一般来说,我们最好都用Binary方式,这样可以保证不出错。如果有文本格式转换的问题,即UNIX格

式的文本和DOS格式的文本之间的转换,有很多工具可以做的,不要在ftp传输的时候冒险,尤其是你如果

对这些东西不是非常清楚的话。


PS:java的System.getProperty()方法可以获取的值:

java.version  Java 运行时环境版本

java.vendor  Java 运行时环境供应商

java.vendor.url  Java 供应商的 URL

java.home  Java 安装目录

java.vm.specification.version  Java 虚拟机规范版本

java.vm.specification.vendor  Java 虚拟机规范供应商

java.vm.specification.name  Java 虚拟机规范名称

java.vm.version  Java 虚拟机实现版本

java.vm.vendor  Java 虚拟机实现供应商

java.vm.name  Java 虚拟机实现名称

java.specification.version  Java 运行时环境规范版本

java.specification.vendor  Java 运行时环境规范供应商

java.specification.name  Java 运行时环境规范名称

java.class.version  Java 类格式版本号

java.class.path  Java 类路径

java.library.path  加载库时搜索的路径列表  7款发型秀出完美脸型

java.io.tmpdir  默认的临时文件路径

java.compiler  要使用的 JIT 编译器的名称

java.ext.dirs  一个或多个扩展目录的路径

os.name  操作系统的名称

os.arch  操作系统的架构

os.version  操作系统的版本

file.separator  文件分隔符(在 UNIX 系统中是“/”)

path.separator  路径分隔符(在 UNIX 系统中是“:”)

line.separator  行分隔符(在 UNIX 系统中是“/n”)

user.name  用户的账户名称

user.home  用户的主目录

user.dir  用户的当前工作目录

转 http://blog.csdn.net/sonysonyok88/article/details/6156760
分享到:
评论

相关推荐

    java利用FTPClient实现上传下载文件.doc

    FTPClient 提供了上传、下载、删除、创建目录等多种操作 FTP 服务器的功能。 上传文件 上传文件是指将本地文件上传到 FTP 服务器上。使用 FTPClient 可以轻松实现文件上传。下面是一个上传文件的示例代码: ```...

    JAVA FTPClient文件操作

    以下是对`JAVA FTPClient文件操作`的详细说明: ### FTP基础知识 FTP是一种用于在网络上传输文件的标准协议,基于TCP/IP网络。它允许用户在本地计算机和远程服务器之间交换文件。FTP有两种模式:主动模式(Port)和...

    java+FTP上传下载

    Java FTP上传下载是Java编程中一个常见的网络操作,主要用于在本地计算机和远程FTP服务器之间交换文件。FTP(File Transfer Protocol)是一种应用层协议,用于在Internet上可靠地传输文件。在Java中,我们可以使用`...

    java ftpClient 连接池设计

    总之,Java FTPClient连接池设计是提高FTP操作性能的关键,它通过复用FTP连接,减少了系统开销,提高了服务的响应速度。通过理解连接池的工作原理和实现方式,开发者可以更好地设计和优化自己的FTP服务。

    Java使用Apache的FTPClient操作ftp

    Java程序使用Apache的commons-net-3.0.jar包中的org.apache.commons.net.ftp.FTPClient类实现对ftp上传、下载、删除等操作,是一个不错的东西哦

    java FTPClient 文件上传下载文件

    本篇文章将围绕如何使用Java中的`FTPClient`库来实现文件的上传与下载操作展开详细介绍。 #### 二、Java FTPClient 库介绍 `FTPClient`是Java中用于处理FTP(文件传输协议)连接的一个类,它位于`commons-net`包中...

    FTPClient用于java开发FTP客户端

    在Java中,FTPClient库提供了一个丰富的API,允许开发者执行各种FTP操作,如连接到FTP服务器、登录、上传文件、下载文件、改变目录、列出目录内容等。这个库不仅支持标准的FTP协议,还支持FTP over SSL/TLS(FTPS)...

    调用FtpClient类上传文件(java)

    以下是一个简单的使用`FtpClient`上传文件的Java代码示例: ```java import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import java.io.FileInputStream; import java.io....

    JAVA中使用FTPClient上传下载

    在Java中使用FTPClient进行文件上传与下载是一个常见的需求,特别是在需要远程管理文件或数据交换的场景下。本文将深入探讨如何使用Java中的FTPClient库实现这一功能,并提供详细的代码示例与解释。 ### FTPClient...

    javaftp.rar_FTPClient java_ftpclient_javaftp client_swing上传下载_上传

    Java FTP 客户端开发是网络编程中的一个重要领域,它允许程序通过FTP(File Transfer Protocol)协议进行文件的上传、下载、重命名和删除等操作。在这个“javaftp.rar”项目中,开发者使用了Java Swing作为图形用户...

    JAVA中使用FTPClient上传下载.doc

    在Java程序中,使用FTPClient可以方便地实现文件的上传和下载。 2. **FTP文件上传**: - 首先,通过`FTPClient.connect()`方法建立与FTP服务器的连接。连接时可以指定主机名(URL)和端口号。默认FTP端口是21,如果...

    FTP.rar_ftp swing_java FtpClient_java ftp_swing_swing 开发ftp

    标题中的"FTP.rar_ftp swing_java FtpClient_java ftp_swing_swing 开发ftp"表明这是一个关于使用Java Swing和FtpClient库开发FTP客户端的项目。这个FTP客户端能够实现多种功能,包括文件和文件夹的上传、下载,以及...

    java ftp 下载 源程序 FTPClient

    FTPClient是一个流行的Java库,它提供了与FTP服务器交互的接口,使得开发者能够轻松地执行各种FTP操作。下面将详细阐述Java FTP下载的基本原理、FTPClient库的使用方法以及如何实现FTP文件下载。 FTP是一种标准的...

    java common FTPClient ftp sftp

    内容概要:java common来操作的ftp和sftp。读取文件、操作文件、删除文件、移动文件(文件改名)等一系列操作,只要导入依赖.txt里面的依赖,就可以直接使用,test类用来快速使用,提示都给足了,ftp的一系列操作...

    java ftpClient 工具包代码

    Java FTPClient工具包是用于在Java程序中与FTP(文件传输协议)服务器进行交互的库。这个工具包提供了丰富的API,使得开发者能够方便地执行上传、下载、删除、列出目录等常见FTP操作。在本文中,我们将深入探讨如何...

    java+ftp方式上传下载文件

    在Java中,使用Apache Commons Net库中的`FTPClient`类可以轻松地建立与FTP服务器的连接。以下是连接过程的关键步骤: 1. **创建 FTPClient 实例**: ```java FTPClient ftpClient = new FTPClient(); ``` 2. *...

    java编写的ftpclient,用于向ftp发送、获取文件

    Java编写的FTPClient是用于与FTP(文件传输协议)服务器交互的一个客户端程序,它使得开发者能够在Java应用程序中实现上传和下载文件的功能。FTP是互联网上一个标准的服务,它允许用户在计算机之间传输文件,通常...

    java应用ftp操作文件

    Java FTP操作文件主要涉及到Java对FTP(File Transfer Protocol)协议的支持,这通常通过第三方库来增强Java标准库的功能。在给定的描述中,开发者提到遇到了Java标准库在不同版本间实现差异的问题,因此选择了...

    java 连接 FTP 文件操作(上传,下载,删除,复制

    在IT行业中,Java是一种广泛应用的编程语言,尤其在文件操作和网络通信方面有着广泛的应用。本文将详细讨论如何使用Java连接FTP(File Transfer Protocol)服务器,进行文件的上传、下载、删除以及复制等操作。 ...

Global site tag (gtag.js) - Google Analytics