java - InputStreamReader 不限制返回的长度

标签 java android inputstream

我正在努力学习 Java 并浏览 Android 网站上的示例。我正在获取 XML 文件的远程内容。我能够获取文件的内容,但随后我需要将 InputStream 转换为 String

public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
        InputStreamReader reader = null;
        reader = new InputStreamReader(stream, "UTF-8");        
        char[] buffer = new char[len];
        reader.read(buffer);
        return new String(buffer);
    }

我遇到的问题是我不希望字符串受到 len var 的限制。但是,我不太了解 java,不知道如何更改它。

如何创建没有长度的 char

最佳答案

一般来说,输入字符串没有最大长度是不好的做法,因为可能会用完可用内存来存储它。

就是说,您可以忽略 len 变量,只是循环 reader.read(...) 并将缓冲区附加到您的字符串,直到您阅读整个 InputStream 像这样:

public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
        String result = "";
        InputStreamReader reader = null;
        reader = new InputStreamReader(stream, "UTF-8");        
        char[] buffer = new char[len];
        while(reader.read(buffer) >= 0)
        {
            result = result + (new String(buffer));
            buffer = new char[len];
        }
        return result;
    }

关于java - InputStreamReader 不限制返回的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18475685/

相关文章:

android - 如何从 Garmin Fenix3 检索 Activity

java - 如何以编程方式检查电话号码是否存在?

将文本文件的内容放入数组然后显示和操作数组内容的 Java 问题

java - 无法读取 Jelly Bean 上的套接字 InputStream

java - Java 打印非英文字符不正确

java - 从自定义适配器(而不是从主 Activity )启动 Intent - 如何在 Activity 结果上实现以重新加载适配器中的 View ?

Javafx AudioClip 不循环

java - PHP 时间戳转 Java 时间戳

不同类中的 Java ActionEvent

安卓NDK : calling java method from JNI C class