以下の WCF サービスを使用する Java クライアントを開発しています。WCF サービスはストリーム テクノロジを使用しているため、メモリ使用量を削減するために Java クライアント コードでもストリーム テクノロジを使用したいと考えています。書き方についてアドバイスをくれる人はいますか?ありがとう。
namespace TmpWcfStream
{
[MessageContract]
public class InputMessage
{
[MessageHeader(MustUnderstand = true)]
public string TranName { get; set; }
[MessageBodyMember(Order=1)]
public Stream FileData { get; set; }
}
[MessageContract]
public class OutputMessage
{
[MessageBodyMember(Order = 100)]
public bool Success { get; set; }
[MessageBodyMember(Order = 200)]
public string ErrorMsg { get; set; }
}
}
namespace TmpWcfStream
{
public class UploadDataSvc : UploadSvcContract
{
private const int bufferLen = 4096;
public OutputMessage UploadData(InputMessage msg)
{
OutputMessage outputMsg = new OutputMessage { ErrorMsg = string.Empty, Success = true };
try
{
Stream inputStream = msg.FileData;
String filePath = @"C:\tmp\output.txt";
using (FileStream targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
{
byte[] buffer = new byte[bufferLen];
int count = 0;
while ((count = inputStream.Read(buffer, 0, bufferLen)) > 0)
{
targetStream.Write(buffer, 0, count);
}
}
inputStream.Close();
}
catch(Exception e)
{
outputMsg.Success = false;
outputMsg.ErrorMsg = e.ToString();
}
return outputMsg;
}
}