我的公司运行的应用程序必须将多种文件存档到某些distants服务器中。该应用程序运行良好,但无法处理大于1GB的文件。
以下是当前用于加载要上载到远程服务器的文件的函数:
FileStream fs = File.OpenRead(fileToUploadPath);
byte[] fileArray = new byte[fs.Length];
fs.Read(fileArray, 0, fs.Length);
然后将字节数组(成功加载时)拆分为100Mb字节数组,并使用以下函数发送到本地服务器(使用某些WSDL Web服务):
localServerWebService.SendData(subFileArray, filename);
我更改了负责文件读取的函数以使用BufferendStream,我还想改进Webservice部分,这样它就不必在每次调用时创建新的流。我想到了这样的事情:
FileInfo source = new FileInfo(fileName);
using (FileStream reader = File.OpenRead(fileName))
{
using (FileStream distantWriter = localServerWebService.CreateWriteFileStream(fileName))
{
using (BufferedStream buffReader = new BufferedStream(reader))
{
using (BufferedStream buffWriter = new BufferedStream(distantWriter))
{
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = 0;
long bytesToRead = source.Length;
while (bytesToRead > 0)
{
int nbBytesRead = buffReader.Read(buffer, 0, buffer.Length);
buffWriter.Write(buffer, 0, nbBytesRead);
bytesRead += nbBytesRead;
bytesToRead -= nbBytesRead;
}
}
}
}
}
但是此代码无法编译,并始终在行Cannot convert MyNameSpace.FileStream into System.IO.FileStream
处向我提供错误using (FileStream distantWriter = localServerWebService.CreateWriteFileStream(fileName))
。我也无法将MyNameSpace.FileStream转换为System.IO.FileStream。
Web服务方法:
[WebMethod]
public FileStream CreateWriteFileStream(String fileName)
{
String RepVaultUP =
System.Configuration.ConfigurationSettings.AppSettings.Get("SAS_Upload");
String desFile = Path.Combine(RepVaultUP, fileName);
return File.Open(desFile, FileMode.Create, FileAccess.Write);
}
那么你们可以向我解释为什么这不起作用?
P.S。:英语不是我的母语,所以我希望我写的内容显然是不可靠的。