Quelle est la bonne façon de lire les fichiers de la socket? Parce que la boucle de lecture du fichier ne se termine pas même si du côté client, l'écriture des fichiers est terminée. J'ai même essayé d'imprimer la position et la longueur du tampon si j'ai encore des données à lire.Quelle est la bonne façon de lire les fichiers depuis le socket?
Voici mon code pour lire le fichier.
private void readActualData(SocketChannel socketChannel) {
RandomAccessFile aFile = null;
System.out.println("Reading actual Data");
try {
aFile = new RandomAccessFile(path, "rw");
ByteBuffer buffer = ByteBuffer.allocate(50000000);
FileChannel fileChannel = aFile.getChannel();
int length;
while ((length = socketChannel.read(buffer)) >= 0 || buffer.position() > 0) {
buffer.flip();
fileChannel.write(buffer);
buffer.compact();
System.out.println("Length : "+length+" and Buffer position : "+buffer.position());
}
fileChannel.close();
System.out.println("End of file reached..Done Reading");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
J'ai réfléchi à ce que vous deviez faire dans le cas de plusieurs fichiers. Vous devez compter la longueur initiale du fichier et quand ce qui reste à lire devient inférieur à buffer.limit() - buffer.position() 'à la fin de la boucle de lecture, vous devez ajuster la limite du buffer tel qu'il ne l'est pas. – EJP