需要帮助从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
是预期的。
答案 0 :(得分:2)
"\""
是一个字符串。如果您只想要"
的字符表示,请改用'"'
。
请注意,如果您的文件不是ASCII格式,您的代码将无法正常工作(并且不同字符集之间的行为将不一致)(它当然取决于您的期望)
如果是ASCII格式,每个字符将占用文件中的一个字节,InputStream::read()
读取单个字节(因此只有一个ASCII字符),所以一切都能正常工作。
如果字符集中每个字符占用的字节数超过1个字节(例如Unicode),则每个读取的字符数将少于一个字符,并且您的代码可能无法按预期工作。
建议使用 Reader::read()
(并使用Character
而不是Byte
),因为它会读取一个字符,而不仅仅是一个字节。
另外,您错过了作业:
while ((in.read()) != '"')
应该是
while ((c = in.read()) != '"')