Czytanie dużego pliku z apletu javacard

Piszę aplet, który przechowuje 3 pliki o różnych rozmiarach 5 Kb, 7 Kb i 11 Kb. Nie mam problemów z przechowywaniem plików w aplecie. Ale kiedy próbuję je odczytać, mogę przeczytać tylko pierwsze dwa (mniejsze pliki). Trzeci plik zgłasza wyjątek:

javax.smartcardio.CardException: Could not obtain response
at sun.security.smartcardio.ChannelImpl.doTransmit(Unknown Source)
at sun.security.smartcardio.ChannelImpl.transmit(Unknown Source)

Próbowałem zrozumieć problem i dowiedziałem się, że ma to związek z rozmiarem pliku. Dlatego stworzyłem plik testowy o rozmiarze 7 Kb i stopniowo zwiększałem ten plik. Działało, dopóki nie osiągnąłem 7905 bajtów. Oznacza to, że 7905 bajtów to maksymalna liczba bajtów, które mogę odczytać z apletu. Łączę odpowiedź za pomocą przykładowego kodu:

public void readFile(APDU apdu, short[] offset, short selectedFile, short MAX_APDU_SEN,       byte OFFSET_SENT) {
    byte[] file = getFile(selectedFile); 
    if (file == null) {
    + ISOException.throwIt(ISO7816.SW_FILE_NOT_FOUND);+
    }
    // work out how many bytes to send this time and how many will be left
    short remain = (short) (file.length - offset[OFFSET_SENT]);
    boolean chain = remain > MAX_APDU_SEN;
    short sendLen = chain ? MAX_APDU_SEN : remain;
    apdu.setOutgoing();
    apdu.setOutgoingLength(sendLen);
    apdu.sendBytesLong(file, offset[OFFSET_SENT], sendLen);
    // Check to see if there are more APDU's to send
    if (chain) {
    +offset[OFFSET_SENT] = sendLen; // count the bytes sent
    ISOException.throwIt(ISO7816.SW_BYTES_REMAINING_00); // indicate there are more bytes     to come
    } else {+
    offset[OFFSET_SENT] = 0; // no more bytes to send
    }
}

Próbowałem dwóch różnych typów kart, tj. Kart kompatybilnych z JC 2.2.1 (36Kb) i JC 2.2.2 (80Kb), ale wszystkie zachowują się tak samo.

Jakaś pomoc proszę?

questionAnswers(1)

yourAnswerToTheQuestion