0

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 条件は問題です。もちろん、引用符はStringwhileintが期待されます。

4

1 に答える 1

2

"\""文字列です。の文字表現だけが必要な場合は、代わり"に を使用してください。'"'

ファイルが ASCII 形式でない場合、コードは期待どおりに動作しないことに注意してください(そして、動作は異なる文字セット間で矛盾します) (もちろん、期待する内容によって異なります)。

ASCII の場合、各文字はファイル内の 1 バイトを占め、InputStream::read()1 バイト (したがって 1 つの ASCII 文字) を読み取るため、すべて正常に動作します。

文字ごとに 1 バイト以上を占める文字セット (Unicode など) の場合、各読み取りは 1 文字未満しか読み取らず、コードはおそらく期待どおりに機能しません。

Reader::read()(およびCharacterではなくByte) を使用することをお勧めします。これは、バイトだけでなく文字を読み取るためです。

また、割り当てがありません。

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

する必要があります

while ((c = in.read()) != '"')
于 2013-03-16T16:04:50.730 に答える