J'utilise le message readFully de DataInputStream lire un tableau d'octets de longueur fixe comme:readFully de DataInputStream la requête
byte[] record = new byte[4660004];
in.readFully(record);
Le problème ici est que, parfois, il faut plus de 5 secondes pour lire ces nombreux octets, ce qui est égal à 20000 enregistrements. Et je reçois ces données sur socket. Le client envoie des données sous la forme d'un tableau d'octets de 4660004 octets. Existe-t-il un moyen de recevoir ces données plus rapidement, puisqu'il faut environ 5 minutes à 1 million de ces enregistrements.
EDIT :: flux de données complète:
premier je crée le flux:
static DataInputStream dIn = null;
dIn = new DataInputStream(connection.getInputStream());
msgType = dIn.readByte();
int msgIntLen = dIn.readInt();
processBatch(msgIntType, msgIntLen, dIn, connector);
.
.
private static void processBatch(int msgIntType, int msgIntLen, DataInputStream in,
Connector connector) throws IOException {
int recordIntLen = in.readInt();
byte[] record = new byte[msgIntLen - 4];
in.readFully(record);
}
où dois-je inclure le tamponnage si cette aide wudf?
Votre DataInputStream encapsule-t-il un BufferedInputStream? –
@Nathan - pas. Comment puis-je faire ceci ? s'il vous plaît voir mon code dans EDIT pour voir comment je suis en train de traiter. – user656189
Essayez ceci: 'dln = new DataInputStream (new java.io.BufferedInputStream (connection.getInputStream()));' –