在Java中获取FTP连接上的Zip文件大小
我正在通过FTP连接发送zip文件,因此为了获取文件大小,我使用了:
URLConnection conn = imageURL.openConnection();
long l = conn.getContentLengthLong();
但它返回-1
同样,对于通过Http请求发送的文件,我得到了正确的文件大小
在这种情况下,如何在ftp连接中获得正确的文件大小
你可以在下面搜索框中键入要查询的问题!
我正在通过FTP连接发送zip文件,因此为了获取文件大小,我使用了:
URLConnection conn = imageURL.openConnection();
long l = conn.getContentLengthLong();
但它返回-1
同样,对于通过Http请求发送的文件,我得到了正确的文件大小
在这种情况下,如何在ftp连接中获得正确的文件大小
# 1 楼答案
也许吧
URLConnection.getContentLength[Long]
专门返回内容长度标题。HTTP(和HTTPS)支持几种不同的主体划分方式,根据服务器实现的HTTP选项和版本,它可能使用内容长度头,也可能不使用类似地,FTP服务器可以在操作开始时提供“检索”文件的大小,也可以不提供。但它从不使用内容长度的头来执行此操作,所以
getContentLength[Long]
无法获得它。然而,如果服务器提供了实现代码,则实现代码会在内部存储它,并且可以通过以下非常丑陋的黑客攻击来提取它:黑客攻击未记录的内部文件可能会在任何时候失败,8以上的Java版本会逐渐阻止它:9到15会发出关于非法访问的警告消息,除非您使用
add-opens
来允许它,并且16会使它成为错误(即致命的)。除非你真的在读取数据之前需要大小(这隐含地给了你大小),否则我不建议这样做