我可以从ftp下载文件而不保存我的目录

时间:2016-01-13 09:40:35

标签: java spring ftp

我有一个页面下载,您要下载的文件必须首先从其他服务器使用ftp下载。 我使用此代码从ftp下载:

ftpClient.connect(server, port);
ftpClient.login(user, pass);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

String remoteFile1 = "/Users/A/file.txt";
File downloadFile1 = new File("/Users/B/Downloads/file.txt");
OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1));
boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);
outputStream1.close();

如果我使用这个程序,我需要在我的目录/ Users / B / Downloads /中保存file.txt然后我需要使用我的其他代码从/Users/B/Downloads/下载file.txt。 p>

是否可以下载file.txt而不先将其保存在我的目录/ Users / B / Downloads /?

2 个答案:

答案 0 :(得分:2)

您可以使用ByteArrayOutputStream而不是BufferedOutputStream。

ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream();
boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);
String fileContent = outputStream1.toString("UTF-8");

答案 1 :(得分:1)

要在内存中写入流,请使用:ByteArrayOutputStream

new ByteArrayOutputStream();

另一种方式:

BufferedReader reader = null;
String remoteFile1 = "/Users/A/file.txt";
try {
   InputStream stream = ftpClient.retrieveFileStream(remoteFile1);
   reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
   int data;
   while ((data = reader.read()) != -1) {
      //here, do what ever you want
   }
} finally {
   if (reader != null) try { reader.close(); } catch (IOException ex) {}
}