На данный момент у меня есть этот код, который получает информацию по сети, сохраняет ее в массив байтов в памяти, а затем записывает ее через FileStream.
StreamReader reader = new StreamReader(tcpClient.GetStream());
// first message is file size
string cmdFileSize = reader.ReadLine();
// first message is filename
string cmdFileName = reader.ReadLine();
int length = Convert.ToInt32(cmdFileSize);
byte[] buffer = new byte[length];
int received = 0;
int read = 0;
int size = 1024;
int remaining = 0;
while (received < length)
{
remaining = length - received;
if (remaining < size)
{
size = remaining;
}
read = tcpClient.GetStream().Read(buffer, received, size);
received += read;
if (read < size)
{
break;
}
}
После этого "буфер" записывается в файл через FileStream. Это работает хорошо, но когда у меня есть большие файлы, очевидно, что этот объем памяти занимает место. Я хотел бы передавать эти файлы прямо на диск, а не записывать их в оперативную память, а затем перезаписывать их на жесткий диск.
Как я мог это сделать?
1024
на что-то вроде этогоbyte[] buffer = new byte[16 * 1024];
- person MethodMan   schedule 08.10.2015request and Response
, просто замените эту часть на вашуStreamReader reader = new StreamReader(tcpClient.GetStream());
, имеет ли это смысл ..? - person MethodMan   schedule 08.10.2015