Java 从InputStream读取直到双引号
需要帮助从InputStream读取字节列表直到引号。 问题是,InputStream读取字节,我不确定当它达到引号时如何停止读取。。。我想到了这样的事情:Java 从InputStream读取直到双引号,java,byte,inputstream,quotes,Java,Byte,Inputstream,Quotes,需要帮助从InputStream读取字节列表直到引号。 问题是,InputStream读取字节,我不确定当它达到引号时如何停止读取。。。我想到了这样的事情: public static List<Byte> getQuoted(InputStream in) throws IOException { int c; LinkedList<Byte> myList = new LinkedList<>(); try { while
public static List<Byte> getQuoted(InputStream in) throws IOException {
int c;
LinkedList<Byte> myList = new LinkedList<>();
try {
while ((in.read()) != "\"") { ?????
list.add(c)
.....
公共静态列表getQuoted(InputStream in)引发IOException{
INTC;
LinkedList myList=新建LinkedList();
试一试{
而((in.read())!=“\”){?????
列表.添加(c)
.....
while条件是一个问题,当然引号是String
,而int
是需要的。“\”“
是一个字符串。如果只需要”
的字符表示,请使用“
请注意,如果您的文件不是ASCII格式,则代码将无法按预期工作(并且不同字符集之间的行为将不一致)(当然这取决于您的预期)
如果使用ASCII,则每个字符将占用文件中的一个字节,并读取一个字节(因此是一个ASCII字符),因此一切正常
如果在每个字符占用超过1字节的字符集中(例如Unicode),每次读取的字符数将少于一个字符,您的代码可能无法按预期工作
(建议使用字符
而不是字节
),因为它将读取字符,而不仅仅是字节
此外,您还缺少一项作业:
while ((in.read()) != '"')
应该是
while ((c = in.read()) != '"')
InputStream
不能包含引号。InputStream
s以字节为单位处理,引号是字符。您需要确定是处理二进制数据还是字符数据。如果您处理字符数据,您应该使用读卡器
@user2177334,请记住这个答案,如果您发现这没有帮助。