在c#中查看ftp文件的各种方法。 我注意到一些例子:
streamReader.ReadToEnd()
然后转换为字节,然后一次发送文件。
而其他人则做:
while (contentLength != 0)
stream.write(buff, 0, contentLength);
contentLength = fileStream.Read(buff, 0, buffLength);
一次发送文件2048用于较大的文件,而另一种方法适用于10-50K范围内的文件吗?
答案 0 :(得分:1)
这实际上取决于您正在设计的系统正在处理的文件大小。如果您有非常大的文件,则整个文件必须保存在缓冲区中,如果您在流式传输时没有将文件“分块”为各个部分,服务器内存将很快用完。
答案 1 :(得分:1)
如果您只能一次读取或写入文件,则必须分配整个文件所需的空间。这可能很麻烦,尤其是当您不知道文件预先有多大时。对于速度较慢的连接也是不好的,因为在整个过程结束之前你将无法使用任何文件,这对于流媒体电影或音频等应用来说显然很糟糕。缓冲是处理这种情况的一个很好的一般策略。
答案 2 :(得分:0)
如果你有大文件,最好不要用大获取来压缩内存,而是将其分解成碎片。
答案 3 :(得分:0)
使用较小的2K缓冲区的第二个代码在内存方面几乎总是更好,并且就时间而言可能是一个非常微不足道的差异:
http://en.wikipedia.org/wiki/Space-time_tradeoff
此外,您的代码使用while循环,其中两行缩进,但第二行实际上不是循环的一部分,因为它没有括在大括号中。