使用Apache Commons FTPSClient,下载的文件始终存储为0字节。我尝试了不同的方法,但在存储的文件中总是得到0字节。在下面的代码中,我展示了这三种方法。
以下是使用的代码:
public static void main(String[] args) {
String server = "ftps-url";
int port = 6321;
String user = "";
String pass = "";
FTPSClient ftp = null;
try {
ftp = new FTPSClient("SSL");
ftp.setAuthValue("SSL");
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
int reply;
ftp.connect(server, port);
System.out.println("Connecting");
System.out.print(ftp.getReplyString());
// After connection attempt, you should check the reply code to verify success.
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.err.println("FTP server refused connection.");
System.exit(1);
}
ftp.login(user, pass);
ftp.execPBSZ(0);
ftp.execPROT("P");
// ... // transfer files
ftp.setBufferSize(1000);
ftp.enterLocalPassiveMode();
// ftp.setControlEncoding("GB2312");
ftp.changeWorkingDirectory("/output"); //path where my files are
ftp.setFileType(FTP.BINARY_FILE_TYPE);
//System.out.println("Remote system is " + ftp.getSystemName());
String[] filelist = ftp.listNames(); //returns null
System.out.println(filelist.length);
System.out.println(Arrays.toString(filelist));
// method 1
File inFile = new File("myfile.xls");
if (!inFile.exists()) {
inFile.createNewFile();
}
InputStream input = new FileInputStream(inFile);
ftp.completePendingCommand();
ftp.storeFile(filelist[0], input);
input.close();
// method 2
FileOutputStream fos = new FileOutputStream("myfile.xls");
ftp.retrieveFile(filelist[0], fos);
fos.flush();
fos.close();
//ftp.completePendingCommand();
// method 3
File path = new File("C:/Users/user/Desktop/");
String remoteFilePath = "/output/" + filelist[0];
File resultFile = new File(path, filelist[0]);
CheckedOutputStream fout = new CheckedOutputStream(new FileOutputStream(resultFile), new CRC32());
ftp.retrieveFile(remoteFilePath, fout);
} catch (Exception ex) {
System.out.println("error");
ex.printStackTrace();
} finally {
// logs out and disconnects from server
try {
if (ftp.isConnected()) {
ftp.logout();
ftp.disconnect();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
方法1是一个上传,而不是下载,它在服务器上用一个零长度的文件重击该文件,因此方法2和3都正确地检索一个零长度的文件。
问题内容: 我无法使send_file(Model.attachment.path)工作。它不会失败,而是向客户端发送一个0字节大小的文件,但文件名正确。 我从Rails 2.3.8迁移到3后开始发生此问题。 此迁移中发生了很多其他事情,我将尽力详细说明所有这些事情。 发行版更改/服务器更改。Rackspace RHEL5到Linode Ubuntu 10.04LTS Ruby版本更改,从1.8.
客户端只有一个字节数组。另一个服务器向我发送JSON 我正在寻找在浏览器中保存byte[]的方法 将它们发送到服务器,或者我可以从客户端下载。 我根本找不到任何解决办法。 所以我的问题是“有可能用restygwt byte[]保存一个怎么保存的?”
问题内容: 我想知道在下载文件时是否可以计数和打印下载的字节数。 问题答案: 如果我理解正确,则希望在传输数据时显示读取的字节数。大概保持某种进度条之类的东西。在这种情况下,您可以使用Go的组合数据结构将阅读器或编写器包装在自定义或实现中。 它只是将相应的或调用转发到基础流,同时使用它们返回的值进行一些其他工作。这是您可以在Go操场上运行的示例。 它生成的输出是这样的:
我正在为一个现有的客户端创建一个服务器。该客户端使用套接字和DataInPutStream从服务器读取输入。它使用以下方法检查服务器结束消息: 在服务器上,我使用serversocket和DataOutputStream向客户端发送消息: 我如何发送一个0字节,以便客户端知道它是消息的结尾?
问题内容: 我正在尝试使用asyncTask下载文件,但无法正常工作,没有错误消息或什么都没有,只是不下载文件…我尝试了所有操作,但似乎并没有输入…任何人都知道可以是问题吗?我在手机上测试过,网址也可以。 问题答案: 我只运行了您的代码,它对我来说很好用。该图像已下载到sdcard。 请注意,请确保在AndroidManifest.xml中设置了以下权限: 这是我得到的日志(请注意,我添加了):
问题内容: 我编写了一些代码来下载我所做的网络广播的一集。它获取剧集的URL,并获取保存它的位置。但是,它最多只能下载16MB,然后自动取消。我不完全确定要增加此值需要更改什么值。是否可以,有人可以指出正确的方向吗?谢谢! 下载代码: 问题答案: 快速查看transferFrom的文档: 好。 计数的值1 << 24(来自原始问题)等于16M 我想这就是您的问题的答案:-)