You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JTextArea.getText()读取文本遇空格截断,求解决方法

问题根源与解决方案

JTextArea.getText()实际上已经读取了完整文本,你遇到的“读到第一个空格就停止”的问题,是因为执行Runtime.getRuntime().exec()时,没有对包含空格的文件路径做特殊处理,导致命令被空格分割成多个无效参数,而非文本读取不全。

解决方案一:给文件路径添加双引号(推荐)

在拼接命令时,用转义的双引号包裹文件路径,让CMD将其识别为单个完整参数:

Send.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e){
        try {
            String file = text.getText();
            // 给file路径添加双引号转义
            Runtime.getRuntime().exec("cmd /k start cmd.exe /K \"cd C:\\Program Files (x86)\\CAREL\\Sparkly && Sparkly.exe configurations apply --connection Serial,COM8,192008N2,199 --src \"" + file + "\"");
        } catch (IOException ex) {
            ex.printStackTrace(); // 打印异常便于排查问题
        }
    }
});

解决方案二:移除路径中的空格(不推荐)

仅当你确认原文件路径可以去掉空格,且文件实际存在于无空格路径下时,可使用字符串替换移除空格:

String file = text.getText().replaceAll(" ", ""); // 移除所有空格

此方法可能导致文件找不到,仅作为备选方案。

更可靠的替代方案:使用ProcessBuilder

ProcessBuilder能更好地处理带空格的参数,避免字符串拼接的引号转义问题:

Send.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e){
        try {
            String file = text.getText();
            // 设置工作目录到Sparkly所在路径
            File workingDir = new File("C:\\Program Files (x86)\\CAREL\\Sparkly");
            // 拆分命令为独立参数,无需处理空格
            ProcessBuilder pb = new ProcessBuilder(
                "Sparkly.exe",
                "configurations", "apply",
                "--connection", "Serial,COM8,192008N2,199",
                "--src", file
            );
            pb.directory(workingDir);
            // 启动新CMD窗口执行命令
            new ProcessBuilder("cmd.exe", "/k", String.join(" ", pb.command())).start();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
});

内容的提问来源于stack exchange,提问作者Hansen85

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:25:24