我正在使用sftp通道作为输入流从远程服务器下载文件,并尝试转换为fileinputstream。然后我从jvm 1.8接收以下异常
java.lang.ClassCastException:com.jcraft.jsch.ChannelSftp $ 2无法转换为java.io.FileInputStream
请帮助。我被困在这里
答案 0 :(得分:0)
如果不创建临时文件,则无法从输入流转换为FileInputStream。参见:Convert InputStream into FileInputStream
如果要从远程读取文件然后再写入文件:
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp channelSftp = (ChannelSftp) channel;
try {
InputStream inputStream = channelSftp.get(srcPath);
File file = //...
OutputStream outputStream = new FileOutputStream(file);
IOUtils.copy(inputStream, outputStream);
outputStream.close();
} finally {
channel.disconnect();
session.disconnect();
}
您可以在此响应之后将其删除: How to convert InputStream to virtual File