通过 jsch 上传 zip 文件到 sftp 站点时输入流已关闭错误

2023-12-06

将 zip 文件上传到 SFTP 时,我们收到以下错误。相同的代码对于另一个应用程序运行良好。我们使用 jsch-0.1.44.jar 进行 SFTP 连接。

java.io.IOException: inputstream is closed
        at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:571)
        at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:431)
        at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:398)
aused by: java.io.IOException: inputstream is closed
        at com.jcraft.jsch.ChannelSftp.fill(ChannelSftp.java:2326)
        at com.jcraft.jsch.ChannelSftp.header(ChannelSftp.java:2350)
        at com.jcraft.jsch.ChannelSftp.checkStatus(ChannelSftp.java:1923)
        at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:559)
        ... 6 more

我搜索了 stackoverflow 和互联网上的许多其他资源来得到答案。 我发现有两个原因不是我的具体问题的原因。

1)此异常通常意味着连接突然关闭。我会查看服务器上的日志以查看是否有错误。 2)这个错误的根本原因是在代码中,远程路径被打开了两次。因此,即使实际上没有关闭通道,但是,当第二次尝试打开远程路径时,现有路径/通道也会关闭或发生其他情况,并且会引发此异常。

进行一些 POC 后,我们对代码所做的任何更改都没有任何影响。我们所研究的一件事是将 inputstream 对象作为参数传递给实际调用channelsftp 的 put 方法的方法。

this.channelSftp.put(inputstream, strFileName );

不是从另一个方法传递输入流,而是编写代码以在调用此 put 的方法内部形成输入流。这没有任何影响。

尝试通过代码将文件上传到 sftp 站点。抛出同样的错误。

后来发现代码没有问题。即使手动上传也失败。这表明我们进一步挖掘此 SFTP 参与详细信息,发现我们使用的 FILENAME 格式不是 SFTP 配置的格式。当我们匹配文件名格式时,问题就解决了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 jsch 上传 zip 文件到 sftp 站点时输入流已关闭错误 的相关文章

  • 如何在 Java/Scala 中跳过流中的无效字符?

    例如我有以下代码 Source fromFile new File path UTF 8 getLines 它抛出异常 Exception in thread main java nio charset MalformedInputExce
  • 在附加的堆栈跟踪中获取了资源但从未释放 - 错误

    我不确定为什么会收到此错误 五分之二的我使用模拟器设置壁纸时 收到错误 在附加的堆栈跟踪中获取了资源 但从未释放 有关避免资源泄漏的信息 请参阅 java io Closeable 当我使用手机设置壁纸时 效果非常好 没有任何故障 为什么我
  • 是否有必要在具有多线程的Paramiko中为每个线程打开一个SFTPClient?

    我想使用 Paramiko 和多线程从远程服务器下载文件 我想到了两个解决方案 但我不确定哪个是正确的 或更好 解决方案一 假设SFTPClient get是线程安全的 但我找不到任何提到这一点的文档 一个简单的方法是 from param
  • SftpClient.UploadFile 和 SftpClient.WriteAllBytes 有什么区别?

    当我使用 SSH NET 通过 SFTP 传输文件时 我观察到一些奇怪的行为 我正在使用 SFTP 将 XML 文件传输到另一个服务 我不控制 进行处理 如果我使用SftpClient WriteAllBytes该服务抱怨该文件不是有效的
  • 从输出流获取输入流

    我有一个组件在输出流中为我提供数据 ByteArrayOutputStream 并且我需要将其写入 SQL 数据库的 blob 字段而不创建临时缓冲区 因此需要获取输入流 根据答案here https stackoverflow com q
  • 为什么 ImageIO.read() 这么慢?

    所以我试图从流中获取 PNG 图像 image ImageIO read inputStream 这段代码运行了十秒钟 我认为问题出在缓慢的InputStream上 所以我尝试先将它加载到缓冲区中 byte bytes inputStrea
  • 使用 Jcraft 通过 SFTP 传输文件

    项目清单 我可以编写一个java程序通过SFTP传输文件 但是 这将包含一个带有可执行命令的脚本 这可以通过 Jcraft 实现吗 比方说 示例脚本文件是这样的 cd pub ascii get filename txt put other
  • Scala:输入流到数组[字节]

    使用 Scala 从 InputStream 读取字节数组的最佳方法是什么 我可以看到您可以将 InputStream 转换为 char 数组 Source fromInputStream is toArray 怎么样 Stream con
  • 在jgit中配置known_hosts

    使用 jgit 和 gitolite 进行源代码控制 我有一个应用程序 可以根据命令生成某些代码 并且我们希望将其提交给源代码控制 目标是快速拉动 提交新代码 然后推送它 我有以下方法 private void commitToGitRep
  • 使用 WinSCP .NET 未找到方法异常 (EventWaitHandle..ctor)

    我正在尝试使用 PowerShell 和 WinSCP NET 程序集连接到 SFTP 服务器 代码无法打开会话 session Open sessionOptions 在我发现的日志中 Exception System MissingMe
  • 读取行期间的 Source.fromInputStream 异常处理

    我创建了一个函数 其中接受输入流作为参数并返回由字符串组成的迭代器 我按如下方式完成此操作 def lineEntry fileInputStream InputStream Iterator String Source fromInput
  • 在 Java 中从 System.in 读取最快的方法是什么?

    我正在使用标准中读取一堆由空格或换行符分隔的整数Scanner System in 在Java中有没有更快的方法来做到这一点 Is there any faster way of doing this in Java
  • 关闭 DataInputStream 也会关闭 FileInputStream 吗?

    FileInputStream fstream new FileInputStream someFile getPath DataInputStream in new DataInputStream fstream 如果我打电话in clo
  • Android - 从网络下载图像,保存到应用程序私有位置的内存中,显示列表项

    我想做的是 我希望我的应用程序从互联网下载图像并将其保存到手机内存中应用程序私有的位置 如果列表项没有可用的图像 即无法在 Internet 上找到 我希望显示默认的占位符图像 这是我在 list item row xml 文件中定义为默认
  • 使用 C++ 中的 java 套接字接收浮点数

    我需要使用套接字从 C 客户端到 java 服务器接收包含浮点数的数组或类 但 InputStreamReader 没有得到正确的结果 任何原因 任何有关更简单方法的建议将不胜感激 谢谢 Java服务器代码 public static vo
  • 当还必须切换用户时使用 JSch 到 SFTP

    我在 Java 客户端中使用 JSch 连接到远程服务器并使用 SFTP 获取一些文件 以下代码对我来说运行良好 JSch ssh new JSch JSch setConfig FileTransferConstants STRICT H
  • 如何从 InputStream 读取一行而不缓冲输入? [复制]

    这个问题在这里已经有答案了 我有一个输入流 其中包含一行字符串 然后是二进制数据 如果我使用读取该行new BufferedReader new InputStreamReader inputStream 二进制数据也正在被读取并且不能被重
  • 输入流返回 NullPointerException (Java)

    以下是出现 NullPointerException 错误的代码 InputStream is getAssets open twentyone txt InputStreamReader iz new InputStreamReader
  • 如何在angularjs中读取pdf流

    I got the following PDF stream from a server 如何在 AngularJS 中读取这个流 我尝试使用以下代码在新窗口中将其作为 PDF 文件打开 success function data wind
  • 蓝牙连接;无法正确发送字符串

    当我需要将字符串从服务器蓝牙套接字发送到客户端蓝牙套接字时 我的程序遇到了麻烦 只要我一次只发送一个字符串 例如聊天 一切都可以正常工作 但是如果我需要在短时间内编写更多字符串 以交换信息 则字符串将不会与客户端代码分离 例如 如果我发送

随机推荐

  • 对于 Power Query 中列中每个值第一次出现的情况,返回 1,否则返回 0

    我有一个数据列表 当每个值第一次出现时 我想在不同的列中返回 1 我可以在 Excel 表中使用公式 COUNTIF A 2 A2 A2 1 0 执行此操作 但我不知道如何在 Power Query 中执行此操作 可以在这里看到一个例子 U
  • 使用 WCF 通过线路传输最少的数据量

    我的项目有一个 netTCP WCF 服务 这是它的 app config
  • 使用 SqlAlchemy 将数据保存到数据库中,对象不可下标

    我正在尝试将一些数据插入数据库 不幸的是它失败并且没有保存 我怀疑我的数据结构不正确 在尝试保存 print title link date 之前 数据会在 process item 中很好地打印 每个对象 1 个标题 链接和日期 但无法保
  • Netbeans 默认使用逗号。为什么?

    大家好 女孩们 那么 Netbeans 像大多数 IDE 一样 使用点 来组织小数位 对吧 我不知道为什么 但我的 IDE 开始使用逗号 来组织小数位 甚至控制台中显示的输出也使用逗号 我如何将其更改回默认设置并再次开始在小数位上使用点 P
  • Android post 文件和文本

    我目前有两种方法 一种是发布文件 另一种是发布一些文本 它们如下 发布数据 public void postData Create a new HttpClient and Post Header ArrayList
  • preg_match(); - 未知修饰符“+”[重复]

    这个问题在这里已经有答案了 好的 我目前正在解析 RSS 提要 我已经获得了我需要的数据 没有问题 剩下的就是解析游戏标题 这是我目前拥有的代码 忽略马虎 它只是一个概念证明
  • Xamarin.iOS:Visual Studio 2019 更新后无法运行

    我面临着一个奇怪的情况 更新 Visual Studio 2019 后 我无法在 iOS 中运行该应用程序 当我尝试从链接到 Mac 的 Windows 计算机运行时会发生这种情况 但是 当我使用 Visual Studio for Mac
  • 如何找到字符串上正则表达式匹配的百分比? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我参与了一项数字无线电传播研究 其中远程发射器在定义的时间发送预定义的信标 该信标很容易与正则表达式匹配 但由于太阳和大气条件的原因 它并不总是 100 解码 我想做的是计算解码的百分
  • 在 Symfony 数据库中导入 Excel 数据

    我正在开发一个项目 需要将 Excel 数据导入到我的 Symfony 数据库中 但问题是我不知道该怎么做 我尝试使用 ExcelBundle 该项目是 用户必须使用表单按钮发送他的 Excel 文件 我需要提取不带标题的数据来填充我的数据
  • 连接到 Docker 容器中的 H2 数据库

    我有一个基本的 Spring Boot Data JPA 项目 我要连接的 h2 数据库位于 tmp customerdb h2 db 当使用运行应用程序时mvn spring boot run一切正常 应用程序连接到数据库 添加记录 并将
  • 如何在 Android 中使用带有“application/octet-stream”的 HTTP POST? (微软认知视频)

    我想在 Android 中使用视频认知服务 Microsoft提供的示例是在C 中使用的 视频功能正在向服务器发送 URL 所以我认为在Android中使用HTTP POST发送URL是可能的 http ppt cc V1piA 我遇到的问
  • 如何通过管道将一个 python 脚本的输出作为另一个 python 脚本的输入?

    例如 script1 py 从用户处获取中缀表达式并将其转换为后缀表达式并将其返回或打印到 stdout script2 py 从 stdin 获取后缀表达式并对其求值并输出值 我想做这样的事情 python3 script1 py pyt
  • 左/中/右对齐 LinearLayout - Android

    这应该很简单 但由于我是 Android 开发新手 所以我要问 我基本上想在我的 avtivity 底部创建一个带有简单按钮 上一个 主页 下一个 的静态菜单栏 但是我在调 整这些方面遇到了问题 因为机器人 layout alignPare
  • 在 SVG 或 WebGL 中使用 Canvas 进行 3D 应用

    我需要构建一个 html5 javascript 3d 应用程序 每个场景我都必须渲染大量对象 大约 200 300 个复杂对象或更多 而不会出现滞后 所以请告诉我应该选择哪种渲染技术 HTML5 Canvas SVG或 WebGL 我听说
  • 初学者了解循环冗余码算法

    at PNG 规范第 5 5 节 它在称为 CRC 或 循环冗余码 的 PNG 文件格式中讨论了这个概念 我以前从未听说过它 所以我正在尝试了解它 采用的 CRC 多项式是 x32 x26 x23 x22 x16 x12 x11 x10 x
  • 在运行时修改 Hikari 属性

    在哪里可以找到有关可在运行时修改的 Hikari 属性的信息 我尝试修改连接超时 我可以做到 并且会在HikariDataSource没有异常 通过设置然后获取属性进行检查 但没有任何效果 如果我最初这样做 HikariConfig con
  • React 路由在 facebook 的 create-react-app 构建中不起作用

    我正在使用反应路由器来定义路由 我正在使用创建反应应用程序为了发展 我的问题是 如果我在地址栏中输入子页面的 url 并尝试访问它 它在开发版本中有效 但在生产版本中无效 我正在使用一个简单的快速服务器来托管生产构建 var express
  • 递归删除

    我有这段代码可以递归删除文件和目录 它工作正常 但有一个小问题 如果 path var www foo 它将删除 foo 内部的所有内容 但不会删除 foo 我也想删除 foo 目录 任何想法 public function delete
  • 为什么 jQuery spritely 动画在第二个 mouseenter 上播放额外的帧?

    我正在使用 CSS sprites 和 jQuery 插件spritely 我有一个超级马里奥图像 当滚动时 我希望播放动画 当您将鼠标从超级马里奥 这是一个 div 元素 我希望动画反向播放到它开始的原始位置 这是我到目前为止所拥有的 d
  • 通过 jsch 上传 zip 文件到 sftp 站点时输入流已关闭错误

    将 zip 文件上传到 SFTP 时 我们收到以下错误 相同的代码对于另一个应用程序运行良好 我们使用 jsch 0 1 44 jar 进行 SFTP 连接 java io IOException inputstream is closed