Java检测连接错误

标签 java

我有一些Java代码,它从URL读取gzip文件并将其解压缩。如何确保从连接读取整个文件或者如何确保它没有问题?

try {
    URL url = new URL("http://example.com/de?Debug=1");
    URLConnection myUrlConnection = url.openConnection();
    GZIPInputStream gZIPInputStream = new GZIPInputStream(myUrlConnection.getInputStream());
    StringBuffer decompressedStringBuffer = new StringBuffer();
    int bytes_read;
    while ((bytes_read = gZIPInputStream.read(buffer)) > 0) {
        String part = new String(buffer, 0 ,bytes_read, "UTF-8");
            decompressedStringBuffer.append(part);
        }
        gZIPInputStream.close();
        String decompressedString = decompressedStringBuffer.toString();

        ...

} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

try-catch block 由IntelliJ 自动生成。我应该捕获哪些其他类型的异常:连接中断收到部分数据连接超时。这些都是我能想到的问题。你能想到别人吗?

最佳答案

如果到达 read() 返回 -1 的位置,则表示您已发送了整个文件。

但不要将其收集在内存中:每次获得一 block 时都用它做一些有用的事情:即发送它,或将其写入文件,或其他什么。

您不需要捕获更多异常,任何 IOExceptions 都表明存在某种问题。

关于Java检测连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43133459/

相关文章:

java - 如何在运行 gradlecompileJava 时修复相关子项目中的 "Cannot find symbol error"

java - 在 URL 中为 http post 编码参数和值或只编码值?

java - 如果添加了太多按钮,JToolBar 会显示箭头

Java 递归泛型和通配符

java - java jni native 报错

java - 编译 Java 硬件 API 以在 Android 中运行。

java - 舞台外的 libgdx 位置窗口

java - 如何在 JAXB Adapter 中使用属性作为键、使用整个元素作为值将复杂元素解析为 Map

java - Selenium Webdriver 循环

java - 读取文件时的唯一分隔符