FTPClient下载文件访问被拒绝

时间:2018-03-27 07:50:58

标签: java apache ftp ftp-client

我正在尝试使用Apache commons 2.0从FTP服务器下载文件。

以下代码提供此错误:"访问被拒绝"。

正确获取文件列表,但只要下载部分执行上述错误就会发生。

public class FTP extends Thread{
    @Override

    public void run() {
        try {
            FTPClient client=new FTPClient();
            client.connect(InetAddress.getByName("192.168.0.100"),2221);
            System.out.println(client.getReplyCode());
            boolean status=client.login("francis", "francis");
            client.enterLocalPassiveMode();
            System.out.println(status);                
            FTPFile[] files=client.listFiles();
            System.out.println("Printing files list :");    
            for(int i=0; i<files.length; i++){
                System.out.println(files[i].getName());
                client.setFileTransferMode(BINARY_FILE_TYPE);
                client.setFileType(BINARY_FILE_TYPE);
                byte[] buffer=new byte[1024];                   
                if(files[i].isFile()){
                    System.out.println("Downloading........");
                    InputStream 
                    ins=client.retrieveFileStream(files[i].getName());
                    OutputStream outstream=new 
                    FileOutputStream("c:/"+files[i].getName());
                    int n=0;

                    while(ins.read(buffer)!=-1){
                        n=ins.read(buffer);
                        outstream.write(buffer,0,n);
                    }                       
                    File downloaded=new File("c:/"+files[i].getName());

                    if(files[i].getSize()==downloaded.length()){
                        System.out.println("Download succesfull..");
                    } else {
                        System.out.println("Error downloading file");
                    }
                }
            }
        } catch (IOException ex) {
            Logger.getLogger(FTP.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void main(String[] args) throws UnknownHostException, IOException {
        FTP thread=new FTP();
        thread.start();
    }
}

在控制台上收到以下错误

&#13;
&#13;
   
Printing files list :<br>
DCIM<br>
Download<br>
LGBackup<br>
Movies<br>
Music<br>
Pictures<br>
Podcasts<br>
SHAREit<br>
Snapchat<br><br>
WhatsApp<br>
MobileTmoney.txt<br>
Downloading........<br>
Mar 27, 2018 12:41:17 PM ftp.FTP run<br>
SEVERE: null<br>
java.io.FileNotFoundException: c:\MobileTmoney.txt (Access is denied)<br>
	at java.io.FileOutputStream.op<br>en0(Native Method)<br>
	at ftp.FTP.run(FTP.java:49)<br>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

操作系统不允许在磁盘中写入您的进程。您的问题不是FTP客户端,位于FileOutputStream,请确保您具有正确的写入权限。

答案 1 :(得分:0)

client.enterLocalPassiveMode();

此行应该在登录之前,在连接之后。