IOException:错误=7,参数列表太长,命令行很大

2024-04-19

我需要从 Java 调用 Unix 命令。代码如下。

String strCmd = "iconv -f "+ strSrcEncoding+" -t "+ strTgtEncoding + " <<< "+"\""+InputMessage+"\"";

String commands[] = {"bash","-c",strCmd};
Process proc = Runtime.getRuntime().exec(commands);
String strData = null;

// Get the error Stream
BufferedReader brStdError = new BufferedReader(new
        InputStreamReader(proc.getErrorStream()));
StringBuilder sbError = new StringBuilder();


// read any errors from the attempted command
while ((strData = brStdError.readLine()) != null) {
    sbError.append(strData);
}

if(sbError.toString().isEmpty())
    return "success";
else
    return "failure"+sbError.toString();

当我传递大数据时出现错误

"bash": java.io.IOException: error=7, Argument list too long

我尝试使用 echo 代替,如下所示

echo <<InputMessage>> | iconv -f utf8 -t Cp930

但遇到了同样的错误

我错过了什么吗?


您可以在命令行上传递给程序的数据量是有限的。如果您有大量数据,您应该使用其标准输入流将其传递给 iconv,即将其写入proc.getOutputStream。这是一个例子:

OutputStream os = proc.getOutputStream();
os.write(InputMessage.getBytes(strSrcEncoding));
os.close();

不幸的是,对于较长的消息,这也会失败,因为iconv将填充它所连接的管道的缓冲区,并等待管道被读取。解决方案是将数据写入iconv从一个线程读取另一个线程的输出。由于所有这些陷阱,处理外部流程很麻烦。你可以在这里读更多关于它的内容:http://www.javaworld.com/jw-12-2000/jw-1229-traps.html http://www.javaworld.com/jw-12-2000/jw-1229-traps.html Apache 公共执行器 http://commons.apache.org/proper/commons-exec/帮助您处理其中的一些问题。

另一方面,你为什么使用 iconv?您知道 Java 对大多数字符编码都有良好的库支持,cp930包括?

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

IOException:错误=7,参数列表太长,命令行很大 的相关文章

  • 将 Set> 转换为 HashMap

    在我的代码中的某一时刻 我创建了一个Set
  • 当按下批准或取消按钮时,如何阻止 JFileChooser 关闭?

    我使用 JFileChooser 的 showOpenDialog 方法来打开文件 如何将 ActionListener 附加到批准按钮JFileChooser以及如何停止这个对话框 单击 批准 按钮且侦听器完成后关闭 现在我有 publi
  • 编写代码来处理单词列表并删除单词中的所有空格

    该代码应该检查字符串数组并查看单词之间是否有空格 这是一个例子 every near ing checking food stand value 应改为hold every nearing checking food stand value
  • Javafx-场景快照不显示值和系列

    我制作了一个非常短的应用程序 它使用 javafx 生成图表 应用程序显示正确的值 图表 但当我做快照时 图像仅显示轴和标签 但不显示系列和值 stage setTitle Line Chart Sample final DateAxis
  • 在基于 RESTful 的应用程序中管理状态

    我们正在评估用于基于 Web 的应用程序的技术 一些建议是采用基于 RESTful 的服务方法 技术堆栈 1 春天 2 Apache CXF JAX RS 我的问题是 1 如何在请求之间管理状态 例如 用户已经过身份验证 现在他正在发出一系
  • Java Swing - 在运行时动态切换语言环境

    我了解如何国际化 java 程序 但我有一个问题 我的程序中的语言可以随时切换 但我的程序可以存在多种状态 这意味着它可能会也可能不会打开多个 JLabels JPanel JFrame 等 是否有一个类或方法可以将当前的 GUI 更新为切
  • ffmpeg 用于屏幕捕获?

    所以我有一个小程序来捕获屏幕和计算机麦克风的声音 然后屏幕截图被编码为 ScreenVideo2 声音被编码为 AAC 如何使用 ffmpeg 逐帧混合 然后将混合输出发送到 wowza 媒体服务器 如果用ffmpeg无法完成 您能提供一些
  • 了解 Android 上的默认键盘

    我想知道 Android 中用户选择的默认键盘 我知道我可以使用以下命令访问启用的输入法列表InputMethodManager 但我想知道用户当前使用的是哪一个 到目前为止 我已经尝试获取当前的输入法子类型 InputMethodMana
  • Android MediaCodec 在异步模式下比同步模式下慢?

    再次 我有一个关于 Android 的 MediaCodec 类的问题 我已成功解码原始 h264 内容并将结果显示在两个纹理视图中 h264 流来自运行 openGL 场景的服务器 该场景有一个摄像头 因此可以响应用户输入 为了进一步减少
  • 通过 jclouds 使用 AWS (S3) - 如何承担角色

    使用普通身份验证凭据时 我可以执行以下操作 ContextBuilder newBuilder aws s3 credentials keyId key buildView BlobStoreContext class 访问 S3 的 Bl
  • 在JPA、关系型数据库等中,什么是Tuple? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在研究 Hibernate 和 JPA 并且一直在寻找这个术语 有人可以用实用和说教的方式向我解释一下这个术语是什么 以及它与 J
  • 将resourceBundle与外部文件java一起使用

    我一直在阅读有关此问题的其他问题和答案 但我不明白资源边界是如何完全工作的 我认为这与 Joomla 使用多语言选项的方式类似 基本上 您有要阅读的不同语言的不同消息的文件 所以我在 src Lang 文件夹中创建了 System prop
  • Hibernate + Oracle IN 子句限制,如何解决?

    我知道这个问题已经发了很多次了 但我想问一下细节 使用 Oracle 您不能向 IN 子句传递超过 1000 个参数 因此将 hibernate 与 Oracle 一起使用可能有一些解决此问题的方案 例如 1 对于每个 1000 个参数列表
  • 如何尽可能快地输出固定缓冲区?

    示例代码 include
  • EJB3 - 通过注入与查找获取 bean - 有什么区别、影响和陷阱?

    我知道有两种获取 EJB 实例的方法 通过 EJB 注释在 servlet 和 EJB 中进行依赖注入 在任何地方通过 Context lookup 进行 JNDI 查找 使用这两种方法有哪些差异 影响和陷阱 它们是一样的吗 依赖注入比查找
  • java.lang.NullPointerException(无错误消息)APK构建

    Top level build file where you can add configuration options common to all sub projects modules buildscript repositories
  • 如何创建序列密钥来保护应用程序

    我有一个创建序列密钥的应用程序 如下所示 Take customername Sign customername using privatekey and sha dsa algorithm 然后可以通过使用公钥解码并检查客户名称匹配来检查
  • 使用 Android API 发布推文

    我一直在寻找一种使用 Android 应用程序发布推文的方法 但我发现的所有方法都不起作用 我不得不承认 Twitter 的 API 并不是那么容易理解 但是我的代码并不长 而且我看不出我的错误在哪里 这是我的代码 public class
  • 总小时数无法从 Android 插入 MySQL

    我使用以下公式获得总小时数 public void updateTotalHours int a SplitTime objMyCustomBaseAdapter getFistTime int b SplitTime objMyCusto
  • Java 将函数添加到 json 对象而不使用引号。

    我正在用 java 构建一个 json 对象 我需要将一个函数传递到我的 javascript 中并使用 jquery isFunction 对其进行验证 我遇到的问题是我必须将 json 对象中的函数设置为字符串 但 json 对象将周围

随机推荐

  • Windows:如何测试高dpi下的UI?

    我想测试我的应用程序的反应high dpi 设置 我指的不仅仅是 120dpi 我想测试更高的 dpi 设置 例如 150dpi 300dpi 600dpi 1000dpi 1200dpi 我的开发机器的显卡无法达到 300dpi 甚至 1
  • Angular @Input getter/setter 和非原始值

    问题 我希望能够在每次子组件绑定的对象中的属性发生更改时调用一个函数 但是 即使可以明显看到绑定的输入属性正在更新 setter 也只会被调用一次 这一切都是因为需要将子组件绑定到其父组件属性 而父组件属性恰好是具有深度嵌套属性的复杂对象
  • Asp.Net Core 3.1 Cookie 未附加 Razor 页面 C#

    Cookie 没有使用以下代码附加到页面 我尝试将 IsEssential 添加到选项中 但它不起作用 使用 Asp Net Core 3 1 Razor 页面 这是我的大部分startup cs 和附加的cookie 代码 启动 cs p
  • ORDER BY 的列有时为空

    Mysql 看起来像这样 SELECT CompanyName LastName FirstName FROM JOIN ORDER BY CompanyName LastName FirstName 现在的问题是 A 列有时是空的 或者是
  • 为什么尝试使用动态参数调用扩展方法时出现错误 CS1973

    考虑以下代码 internal static class Program public static string ExtensionMethod this string format dynamic args return format
  • 使用 ffmpeg 处理流的解码数据时出错

    我正在使用以下命令 ffmpeg i video1a flv i video1b flv i video1c flv i video2a flv i video3a flv i video4a flv i video4b flv i vid
  • 3D 游戏的 Libgdx 渲染层

    在我的第一个 3D 游戏中 我现在想要渲染地板 它实际上是一个平面 不是 libgdxPlane on y 0 我想添加一个Texture到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考
  • django 应用程序的 Heroku 推送获取“没有名为 psycopg2.extensions 的模块”

    我正在尝试将 django 应用程序推送到 heroku 并收到一个我在 heroku 或 stackoverflow 论坛中从未见过的错误 我正在使用 postgres 我不知道该从哪里开始 我在任何文档中都没有看到任何说明问题的内容 主
  • 在 TeamCity 构建期间将 nuget 包发布到 Octopus

    有一个已知问题 如果您在 TeamCity 构建期间进行部署 则会部署以前的版本 因为当前版本仅在构建完成后才可用 文档建议创建辅助 TeamCity BuildConfiguration 作为解决方法 但它很糟糕并且似乎不再起作用 有许多
  • 在 AngularJS 中的控制器之间共享数据

    我使用以下工厂从 API 获取数据并将其存储到名为 apiData 的本地变量中 app factory MyFactory function resource q var apiData var service var resource
  • android 清除字符串中的值

    我有一个应用程序 可以让您单击按钮从起始值 20 中添加和减去 5 或 5 以及 1 或 1 我对其进行了设置 这样当单击按钮时 它将将该值放入字符串并显示它 以便用户可以看到他们按下的内容的历史记录 我有一个名为 Reset 的方法 将起
  • 如何在 Android 中播放 GIF

    Hello stackoverflow我正在尝试开发一个 Android 应用程序来玩我自己的GIF 这是代码片段 MainActivity java public class MainActivity extends Activity O
  • 为什么 std::setbase(2) 不切换到二进制输出?

    cppreference 页面位于std setbase http en cppreference com w cpp io manip setbase says 除 8 10 或 16 之外的基值会将基域重置为零 这对应于十进制输出和依赖
  • 如何检查所有返回值是否均为 true?

    有没有一种简单的方法来确保所有返回的值都是 True 在下面的示例中 我有一个代表文件的对象集合 我想在继续之前确保所有源文件都存在 我将所有路径传递给 Test Path 该函数为每个文件返回 True False gt filesToU
  • 如何使用 NSJSONSerialization 类参考读取 JSON 文件?

    我需要使用 NSJSONSerialization 类参考来读取 JSON 文件 并且我找到的有关使用此类的所有示例都是从网页本身读取内容 而不是从之前创建的 JSON 文件中读取内容 任何人都知道如何使用该类解析 JSON 文件 谢谢 简
  • 如何在没有机器人的情况下使用 Telegram API?

    我不需要回复机器人 我只想进行只读调用来读取频道历史记录 也许我需要 该方法https core telegram org method messages getHistory https core telegram org method
  • jQuery ajax 处理 401 未经授权

    我正在使用 jQuery ajax 调用第三方网页 根据他们的页面 如果登录成功 他们向我发送状态代码 200 如果登录不成功 他们向我发送状态代码 401 这是我的 jquery 代码示例 此代码在 IE 上运行良好 但在 Chrome
  • Chrome 不断加载我网站的旧缓存

    我遇到了这个奇怪的问题 我的 Chrome 浏览器不断加载旧版本的网站 其代码甚至不再存在于我的服务器上 我认为这是一个典型的缓存问题 我尝试清理浏览器缓存 使用隐身模式并清除 DNS 缓存 旧的缓存页面仍在加载 这个问题似乎已经在这个谷歌
  • 无法向分组数据框添加行

    这是这个问题的后续问题如何将行添加到数据框中仅修改某些列 https stackoverflow com questions 71095723 how to add a row to a dataframe modifying only s
  • IOException:错误=7,参数列表太长,命令行很大

    我需要从 Java 调用 Unix 命令 代码如下 String strCmd iconv f strSrcEncoding t strTgtEncoding lt lt lt InputMessage String commands ba