【问题标题】:FTPClient.rename(from,to) function return falseFTPClient.rename(from,to) 函数返回 false
【发布时间】:2018-09-14 11:25:18
【问题描述】:

我正在开发一个 android 应用程序并愿意通过 FTP 服务器重命名文件,但得到错误作为回报,请帮助代码有什么问题。代码如下

public boolean Rename(final FTPFile remoteFile, final String path, final String renameToo) throws IOException {
    Log.e("Rename","Renaming file 1");
   new AsyncTask<String,String,String>(){
       @Override
       protected String doInBackground(String... strings) {
           Log.e("Rename","Renaming file 2");
    client=new FTPClient();
    try {

        client.connect(host,port);
        client.enterLocalPassiveMode();

        if(client.getReplyCode()>-1){

            boolean loginStatus=client.login(user,password);
            if(loginStatus){

                status=client.rename(path+"/"+remoteFile.getName(),renameToo);//always false ?

                Log.e("Rename Status", String.valueOf(status)); 
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
        Log.e("Error", String.valueOf(e));
        status=false;
    }
    finally {
        if(client.isConnected()){
            try {
                client.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
           return null;
       }
   }.execute();
    return status;
}

【问题讨论】:

  • 你应该告诉你的参数和路径的值,因为我们不知道你在做什么
  • 更奇怪的是,您使用 FtpFile 实例但必须连接。
  • 其他一切正常意味着连接等都可以,只是从这行 clien.login(filenamefrom,filenameto);此行总是返回 false

标签: java android apache-commons ftp-client


【解决方案1】:

1.确保您的 FTP 用户有权更改此目录中的文件。

2.确保您的 FTP 服务器具有操作系统的权限,可以更改其主目录和子目录。

我在 Windows 上运行的 FTP 服务器 (FileZilla) 也遇到了同样的问题。我可以下载文件,但我无法重命名它们或移动到子目录。经过一番研究,我意识到我的 FTP 服务器的主目录是只读的。

尝试在调试器中获取 FTP 响应代码。就我而言,它是 550(未采取请求的操作。文件不可用(例如,找不到文件,无法访问)。)

https://en.wikipedia.org/wiki/List_of_FTP_server_return_codes

【讨论】:

    猜你喜欢
    • 2011-01-04
    • 2017-01-22
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2014-04-26
    相关资源
    最近更新 更多