2016-09-19 24 views
0

でのJavaするByteArrayInputStreamを使用した:私はこの場合Fileに入った私はこのコードを持っているファイル

public void uploadToFTP(File file) { 

    try { 
     final ByteArrayInputStream stream = new ByteArrayInputStream(FileUtils.readFileToByteArray(file)); 
     String date = dateFormat.format(new Date()); 
     String filename = date.replaceAll(":", "-"); 
     sessionFactory.getSession().write(stream, "dir/" + filename + ".txt"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

パラメータ私はいくつかのFTPにアップロードしたいのですが、問題は、私はこれを行うたびにファイルが実際には空です。私は例えばfinal ByteArrayInputStream stream = new ByteArrayInputStream("Text here".getBytes());を試してみるとうまくいき、ファイル内に情報を格納していますが、ここで問題になる可能性があります。Fileをバイトに変換すると問題が発生する可能性がありますか?

+0

あなたは、入力ファイルが空ではありませんか? Btwでは、メモリ内のファイル全体を読む必要なく 'final InputStream is = new BufferedInputStream(new FileInputStream(file))'を使うことができます。 – ike3

+0

はい、入力は空ではありませんが、あなたの提案を試してみましょう – imoteb

答えて

0

thsiのコードを使用します。

public List<ProcessedFile> uploadFTPFilesByCridational(List<ProcessedFile> processedFiles, String sourceDir, 
      String destinationPath, String hostName, String userName, String password, String portNo, String extation, 
      int fileHours, int fileMint) { 
     List<ProcessedFile> processedFilesList = new ArrayList<>(); 
     try { 
      FTPClient ftpClient = new FTPClient(); 

      // client FTP connection 
      ftpClient = connectToFTPClient(hostName, userName, password, portNo); 

      // check if FTP client is connected or not 
      if (ftpClient.isConnected()) { 

       if (processedFiles != null && processedFiles.size() > 0) { 
        for (ProcessedFile processedFile : processedFiles) { 
         FileInputStream inputStream = null; 
         try { 
          File file = new File(sourceDir + "/" + processedFile.getOriginalFileName()); 
          inputStream = new FileInputStream(file); 

          if (!ftpClient.isConnected()) { 
           ftpClient = connectToFTPClient(hostName, userName, password, portNo); 
          } 

          ByteArrayInputStream in = null; 
          try { 
           ftpClient.changeWorkingDirectory(destinationPath); 
           ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 
           ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE); 
           ftpClient.enterLocalPassiveMode(); 
           in = new ByteArrayInputStream(FileUtils.readFileToByteArray(file)); 
           ftpClient.storeFile(file.getName(), in); 
          } catch (Exception e) { 
           logger.error(e.getMessage()); 
          } 

          inputStream.close(); 
          in.close(); 

          processedFile.setProcessedStatus(ProcessedStatus.COMPLETED); 
          processedFilesList.add(processedFile); 
         } catch (Exception e) { 
          logger.error(e); 
          processedFile.setProcessedStatus(ProcessedStatus.FAILED); 
          processedFilesList.add(processedFile); 
         } 
        } 
       } 
      } 
      if (ftpClient.isConnected()) { 
       try { 
        ftpClient.logout(); 
        ftpClient.disconnect(); 
       } catch (IOException e) { 
        logger.error(e.getMessage()); 
       } finally { 
        try { 
         ftpClient.disconnect(); 
        } catch (Exception e) { 
         logger.error(e.getMessage()); 
        } 
       } 
      } 
     } catch (Exception e) { 
      logger.error("FTP not connected exception: " + e); 
     } 
     return processedFilesList; 
    } 
関連する問題