gpt4 book ai didi

java - 从InputStream读取直到双引号

转载 作者:行者123 更新时间:2023-12-02 07:11:34 26 4
gpt4 key购买 nike

需要帮助从 InputStream 读取字节列表直到引号。问题是,InputStream 读取字节,我不知道当它到达引号时如何停止读取......我想到了这样的事情:

public static List<Byte> getQuoted(InputStream in) throws IOException {
int c;
LinkedList<Byte> myList = new LinkedList<>();
try {
while ((in.read()) != "\"") { ?????
list.add(c)
.....

while条件有问题,当然引号是String,而int是预期的。

最佳答案

"\"" 是一个字符串。如果您只需要 " 的字符表示形式,请改用 '"'

请注意,如果您的文件不是 ASCII 格式,您的代码将无法按您预期的方式工作(并且不同字符集之间的行为会不一致)(当然,这取决于您的预期) .

如果采用 ASCII,每个字符将在文件中占用一个字节,InputStream::read()读取单个字节(即单个 ASCII 字符),因此一切都会正常工作。

如果在每个字符占用超过 1 个字节的字符集中(例如 Unicode),则每次读取将读取不到一个字符,并且您的代码可能无法按预期工作。

Reader::read() (并建议使用 Character 而不是 Byte),因为它将读取一个字符,而不仅仅是一个字节。

此外,您还缺少一项作业:

while ((in.read()) != '"')

应该是

while ((c = in.read()) != '"')

关于java - 从InputStream读取直到双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15451164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com