我试图通过 Android 应用程序中的套接字连接读取 JSON 字符串,但突然开始出现我无法解释的 StringIndexOutOfBoundsExceptions(屏蔽了包名称中的一些标识符):
java.lang.StringIndexOutOfBoundsException: length=10000; regionStart=0; regionLength=-1
at java.lang.StringFactory.newStringFromChars(StringFactory.java:218)
at **.***********.SocketHandler.listenForMessages(SocketHandler.java:48)
SocketHandler.listenForMessages() 读取的地方(从第 45 行开始)
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
char[] buffer = new char[READ_BUFFER];
int messageLength = reader.read(buffer, 0, READ_BUFFER);
String message = new String(buffer, 0, messageLength);
我没有触及那部分代码 - 几周前它工作正常 - 当我突然遇到这个异常时,即使将 READ_BUFFER 增加到比接收到的消息应该大得多(这里是 10k)。
指标
length=10000; regionStart=0; regionLength=-1
让我假设问题源于阅读一条空消息,但我不明白为什么问题没有早点出现。有帮助吗?
最佳答案
尝试替换这个:
int messageLength = reader.read(buffer, 0, READ_BUFFER);
有了这个:
int messageLength = reader.read(buffer, 0, buffer.Length);
关于android - 转换从 Android 中的 BufferedReader 读取的 char[] 时出现 StringIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54261249/