使用正确的FTP传输方式

 

 

使用ftp上传文件时,一定注意所选用的传输方式,比如使用了ascii上传文件后之后,再把文件拉回本地,覆盖源文件

会发现文件有了改动,用svn提交时,会有这样的提示

text是相同的,但换行(Newlines)变了

为什么会这样?

FTP有ASCII和Binary两种传输模式。
Binary模式不会对数据进行任何处理。
Ascii模式会将回车换行转换为本机的回车字符。

以我刚上传的文件为例.

以下我原文件的的一部分,第一行是个大括号,然后换行

通过16进制查看工具,可以看到换行符的16进制的表示

蓝色的0A就是右侧蓝色的黑点(换行)的16进制

但我的开发环境是windows,因此使用Ascii传输时,\n变成了\r\n,

因此我再次用ftp把文件呢从服务器拉回本地时,再次查看换行符的16进制

蓝色的0D就是\r,它和右侧的0A共同构成windows的换行符,即\r\n,Ascii方式改变了文件的换行符,这个可不好.

所以,不要使用ascii传输文件.要使用Binary方式.

 参考链接

转载于:https://www.cnblogs.com/ch459742906/p/8057404.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java FTP(文件传输协议)是一种在网络上发送和接收文件的方法。Java提供了一组类和接口来实现FTP功能,这些类和接口位于java.net和org.apache.commons.net包中。 下面是一个使用Java连接到FTP服务器并上传文件的简单示例代码: ``` import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; public class FTPUploader { public static void main(String[] args) { String server = "ftp.example.com"; int port = 21; String user = "username"; String pass = "password"; FTPClient ftpClient = new FTPClient(); try { ftpClient.connect(server, port); ftpClient.login(user, pass); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // APPROACH #1: uploads first file using an InputStream String firstRemoteFile = "test.txt"; InputStream inputStream = new FileInputStream("D:/test.txt"); System.out.println("Start uploading first file"); boolean done = ftpClient.storeFile(firstRemoteFile, inputStream); inputStream.close(); if (done) { System.out.println("The first file is uploaded successfully."); } } catch (IOException ex) { System.out.println("Error: " + ex.getMessage()); ex.printStackTrace(); } finally { try { if (ftpClient.isConnected()) { ftpClient.logout(); ftpClient.disconnect(); } } catch (IOException ex) { ex.printStackTrace(); } } } } ``` 该代码使用了Apache Commons Net库中的FTPClient类来实现FTP功能。首先,它连接到FTP服务器并使用用户名和密码登录。然后,它设置文件类型为二进制,并使用FileInputStream读取本地文件。最

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值