我正在尝试使用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();
}
}
在控制台上收到以下错误
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;
答案 0 :(得分:1)
操作系统不允许在磁盘中写入您的进程。您的问题不是FTP客户端,位于FileOutputStream
,请确保您具有正确的写入权限。
答案 1 :(得分:0)
client.enterLocalPassiveMode();
此行应该在登录之前,在连接之后。