java jsch 多文件上传_JSch没有将完整的文件上传到远程SFTP服务器,只是部分地

在尝试使用Java的JSch库通过SFTP上传由JAXB对象生成的XML文件时,发现上传到远程服务器的文件不完整,缺少结束标记和一些字符。代码中使用JSch建立会话,打开SFTP通道,然后通过marshaller将TradeLimits对象转化为XML并尝试上传。虽然在控制台中正确打印了完整的XML,但在SFTP服务器上文件却部分缺失。问题可能在于JSch库的使用或者SFTP上传过程中出现的错误。
摘要由CSDN通过智能技术生成

我试图使用Jsch库将本地创建的XML文件(使用JAXB从Java对象封送)传输到远程服务器。但是,该文件只被部分上载。它缺少结束标记和结尾处任意数量的字符。

我的代码看起来是这样的(TradeLimits是一个JAXB注释的Java类)

TradeLimits limits = getTradeLimits(); //complex object with many fields

JSch jsch = new JSch();

jschSession = jsch.getSession(username, remoteHost);

//to avoid unknown host issues

Properties config = new Properties();

config.put("StrictHostKeyChecking", "no");

jschSession.setConfig(config);

jschSession.setPassword(password);

jschSession.setPort(22);

jschSession.connect();

ChannelSftp channelSftp = (ChannelSftp) jschSession.openChannel("sftp");

channelSftp.connect();

jaxbContext = JAXBContext.newInstance(TradeLimits.class);

Marshaller marshaller = jaxbContext.createMarshaller();

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); //for pretty print

marshaller.marshal(limits, channelSftp.put(limitUploadPathString)); //this uploads only partial xml file to sftp server

marshaller.marshal(limits, System.err)); //THIS WORKS CORRECTLY AND THE FULL XML IS PRINTED!

channelSftp.disconnect();

channelSftp.exit();

请注意,这不是JAXB问题,因为它将在其他地方打印完整的XML,但只将部分XML上载到远程服务器。可能是什么问题?提前谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值