Apache Commons FTP problems(Apache Commons FTP 问题)
问题描述
我想用 Apache Commons Net 实现一个 FTP 客户端,仅用于上传数据.FTP 服务器的连接和登录工作正常.但是上传不正常.这些文件与原件相比有点大.并且文件已损坏.我尝试了图像、视频和文本文件.只有文本文件没问题.
I want to implement a FTP Client with Apache Commons Net only for uploading data. The Connection and Login to FTP-Server works fine. But the upload does not work right. The files are a little to big as the originals. And the files are damaged. I tried an image, a video and a textfile. Only the textfile is alright.
现在我在调试时看到了
boolean tmp=client.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
给我 false.所以不能设置.为什么?(也许这不是问题?)
gives me false. So it can not be set. Why?
(Maybe this is not the problem?)
这是我的其余代码
client=new FTPClient();
    try {           
        int reply;
        client.connect(url, port);
        reply = client.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply))
        {
            client.disconnect();
            System.err.println("FTP server refused connection.");
            System.exit(1);
        }
        client.login(user, pw);
        boolean xxx=client.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
        client.setControlKeepAliveTimeout(300);
        client.enterLocalPassiveMode();
if (client.isConnected())
    {
    try {
        File file=new File(<FILE>);
        FileInputStream inputStream = new FileInputStream(file);
        OutputStream outputStream = client.storeFileStream(file.getName());
          byte[] buffer = new byte[4096];
          int l;
       while((l = inputStream.read(buffer))!=-1)
               {
                outputStream.write(buffer, 0, l);
            }
          inputStream.close();
          outputStream.flush();
          outputStream.close();}
推荐答案
更改如下:
boolean xxx=client.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
应该是:
boolean xxx=client.setFileType(FTP.BINARY_FILE_TYPE);
您将 FileTransferModes 与 FileTypes 混淆了.
You have confused FileTransferModes with FileTypes.
可用的文件类型有:
- FTP.ASCII_FILE_TYPE(默认)
 - FTP.BINARY_FILE_TYPE
 - FTP.EBCDIC_FILE_TYPE
 - FTP.LOCAL_FILE_TYPE
 
可用的 FileTransferMode 有:
The available FileTransferModes are:
- FTP.STREAM_TRANSFER_MODE(默认)
 - FTP.BLOCK_TRANSFER_MODE
 - FTP.COMPRESSED_TRANSFER_MODE
 
我想如果 apache 为这些常量类型引入了枚举,那么可以避免这种问题,但是该库将无法用于 pre-java-5 运行时.
我想知道 java 1.4 兼容性到底有多大问题.
I suppose if apache introduced enums for these constant types, then this kind of problem could be avoided, but then the library would not be available to pre-java-5 runtimes.
I wonder how much of an issue java 1.4 compatibility really is.
这篇关于Apache Commons FTP 问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Apache Commons FTP 问题
				
        
 
            
        基础教程推荐
- 如何在 Spring @Value 注解中正确指定默认值? 2022-01-01
 - 验证是否调用了所有 getter 方法 2022-01-01
 - 在 Java 中创建日期的正确方法是什么? 2022-01-01
 - 大摇大摆的枚举 2022-01-01
 - Java 实例变量在两个语句中声明和初始化 2022-01-01
 - 从 python 访问 JVM 2022-01-01
 - 多个组件的复杂布局 2022-01-01
 - 如何在 JFrame 中覆盖 windowsClosing 事件 2022-01-01
 - Java Swing计时器未清除 2022-01-01
 - 不推荐使用 Api 注释的描述 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
						
						
						
						
						
				
				
				
				