ftpClient.retrieveFileStream读取到的inputstream直接在ftp生成文件
时间: 2024-10-19 12:05:11 浏览: 32
当你使用FTPClient的`retrieveFileStream()`方法获取到文件流后,可以直接将这个流用于创建新的FTP文件。这通常涉及到以下几个步骤:
1. 获取文件流:
```java
InputStream is = null;
try {
is = client.retrieveFileStream(filePathOnServer);
} catch (IOException e) {
// 处理文件流获取失败
}
```
2. 检查流是否有效:
确保`is`不是null并且可以正常读取内容。
3. 创建一个新的FTP文件:
首先,确认目标目录是否存在,然后创建一个FTPFile对象,指定新文件的路径:
```java
FTPFile fileToCreate = new FTPFile();
fileToCreate.setComment("Newly created file");
fileToCreate.setName(destinationFileName);
fileToCreate.setType(FTPFile.FILE_TYPE);
fileToCreate.setSize(is.available()); // 设置文件大小,可根据实际流长度调整
```
4. 将流写入FTP:
开始一个新的文件传输,将输入流的数据写入FTP服务器:
```java
try {
client.makeFile(fileToCreate, new OutputStream() {
@Override
public void write(int b) throws IOException {
is.read(b); // 从原始流中读取数据并写入FTP
}
@Override
public void close() throws IOException {
is.close(); // 关闭输入流后,FTP传输结束
}
});
} catch (IOException e) {
// 处理文件写入失败
}
```
5. 断开连接和释放资源:
最后别忘了关闭FTP连接,释放相关资源:
```java
try {
if (client.isConnected()) client.logout();
client.disconnect();
} catch (IOException e) {
// 处理断开连接错误
}
finally {
if (is != null) try { is.close(); } catch (IOException ignore) {};
}
```
阅读全文