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

使用openStream()与PrintWriter读取网站数字写入txt文件为空求助

解决使用openStream()和PrintWriter读取网站数字求和后输出文件为空的问题

我完全懂你现在的困扰——跟着书本代码尝试读取网站上的数字求和,再写入到txt文件里,但输出文件始终是空的。结合你给出的代码片段和这类场景的常见问题,我整理了几个最可能的原因和对应的解决办法:

  • Scanner没正确从HTML页面中提取数字
    math.com的页面是HTML结构,直接用默认的Scanner读取的话,会拿到一堆HTML标签、普通文本,默认的分隔符根本没法精准识别出数字。比如你如果直接用input.nextInt(),很可能因为数字被其他内容包裹,根本没读到任何数字,求和结果为0,或者直接抛出异常导致后续写入步骤没执行。
    解决办法:先把页面内容完整读取成字符串,再用正则表达式提取所有数字:

    // 读取页面内容为字符串
    String pageContent = new String(pageLocation.openStream().readAllBytes(), StandardCharsets.UTF_8);
    // 匹配所有数字
    Pattern numPattern = Pattern.compile("\\d+");
    Matcher numMatcher = numPattern.matcher(pageContent);
    
    int total = 0;
    while (numMatcher.find()) {
        total += Integer.parseInt(numMatcher.group());
    }
    
  • PrintWriter未刷新或关闭
    PrintWriter是带缓冲区的,如果写完内容后没有调用flush()手动刷新,或者没有关闭流,缓冲区里的内容可能不会被写入到文件中,尤其是程序直接结束的话,缓冲内容会直接丢失。
    解决办法:要么手动刷新+关闭,要么用try-with-resources语法自动管理流(更推荐,避免遗漏关闭):

    // 手动关闭的写法
    PrintWriter writer = new PrintWriter("sum_result.txt");
    writer.println("数字总和:" + total);
    writer.flush(); // 强制把缓冲内容写入文件
    writer.close(); // 关闭流释放资源
    
    // try-with-resources自动关闭的写法(更安全)
    try (PrintWriter autoWriter = new PrintWriter("sum_result.txt")) {
        autoWriter.println("数字总和:" + total);
    } catch (IOException e) {
        e.printStackTrace();
    }
    
  • 网站内容读取失败(网络/协议问题)
    你用的是http://www.math.com/,现在很多网站已经强制跳转HTTPS了,用HTTP请求可能会拿到重定向页面的内容,根本没有你要的数字;另外如果网络连接失败、网站返回错误码,openStream()会抛出IOException,而你的代码直接throws IOException,程序会直接终止,根本走不到写入步骤。
    解决办法:

    1. 把URL改成https://www.math.com/试试;
    2. 给读取逻辑加上异常捕获,排查是否读取失败:
    try (InputStream stream = pageLocation.openStream()) {
        // 这里写读取、提取数字的逻辑
    } catch (IOException e) {
        System.out.println("读取网站内容出错:" + e.getMessage());
        e.printStackTrace();
    }
    
  • 代码逻辑未执行到写入步骤
    比如Scanner读取时陷入死循环,或者判断条件错误,导致求和完成后根本没走到写入代码的部分。可以在关键位置加调试输出,比如打印总和total的值,看看是否有正确计算出结果,再确认写入代码是否被执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:35:00