Java でクライアント サーバー システムを開発しています。シリアル化されたオブジェクトを使用して、TCP チャネル経由でメッセージを送信しています。
また、ファイルを送信する必要があります。独自のカスタム メッセージ クラスを定義できます。
public class SendFile implements Serializable {
private byte[] fileContents;
...
}
して送信します。私が理解していることから、ファイルを反対側に送信する前にすべてをメモリに入れようとするため、大きなファイルがある場合、これは問題を引き起こします。
私は読んExternalizable
だことがありますが、TCP チャネル経由でファイルを送信する前に、ファイルがまだすべてのコンピューターのメモリに読み込まれている場合、それは良くありません。私はそれを行うための「怠惰な」方法が必要でした(ネットワーク経由で送信するときにディスクから読み取り、既に読み取ったものをメモリから破棄します)。
この問題を処理する最もクリーンな方法は何ですか? 最悪の場合、これを小分けにすることもできますが、できれば避けたいです。
編集:
もちろん、ファイルのストリームを開いて「送信」することもできます。しかし、それは、ファイルと他のすべてのメッセージを異なる方法で送信することを意味します。これは、私が避けたいと思っていることです。
ありがとう