接收来自FTP客户端的空日志文件,而连接到Azure的 - 因为日志是“使用”

接收来自FTP客户端的空日志文件,而连接到Azure的 - 因为日志是“使用”

问题描述:

问题是:接收来自FTP客户端的空日志文件,而连接到Azure的 - 因为日志是“使用”

FTPClient client = new FTPClient(); 

ofcourse我所有的连接细节在这里和比:

InputStream inputStream = client.retrieveFileStream(file.getName()); 
System.out.println(client.getReplyString()); 

输出:

550 The process cannot access the file because it is being used by 
another process. 

我怎样才能把这个日志文件?

下面是完整的代码:

public static void retrieveLogFilesFTP() { 
     try { 

      FTPClient client = new FTPClient(); 

     for (int i = 0; i < components.length; i++) { 

      client.connect(ENV_PROD); 
      client.login([loginUserName], [loginPassword]); 
      client.enterLocalPassiveMode(); 
      client.setFileType(FTP.BINARY_FILE_TYPE); 
      client.changeWorkingDirectory("/site/wwwroot"); 


       FTPFile[] ftpFiles = client.listFiles(); 

       if (ftpFiles != null && ftpFiles.length > 0) { 


        for (FTPFile file : ftpFiles) { 
         if (file.getName().startsWith("httpplatform")) { 


          File currentDirectory = new File(PATH + components[i]); 
          if (!currentDirectory.exists()) { 
           currentDirectory.mkdir(); 
          } 

          OutputStream output = new FileOutputStream(currentDirectory + "/" + file.getName(), false); 
          client.retrieveFile(file.getName(), output); 


          System.out.println(client.getReplyString()); 

          output.close() 


         } 

        } 

       } 


      client.logout(); 
      client.disconnect(); 
      changeLogFilesNames(new File(PATH + "/" + components[i] + "/"), components[i]); 


     } 


    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 


} 

我能够使用retrieveFileStream()从Azure中下载文件。你可以试试看。

... 
InputStream inputStream = client.retrieveFileStream(file.getName()); 
OutputStream output = new FileOutputStream(currentDirectory + "/" + file.getName(), false); 

//Using org.apache.commons.io.IOUtils 
IOUtils.copy(inputStream, output); 
IOUtils.closeQuietly(output); 
IOUtils.closeQuietly(inputStream); 

System.out.println(client.getReplyString()) 
...