如何在从FTP下载时从流中读取/写入以空结尾的字符串
本文关键字:结尾 字符串 FTP 下载 读取 | 更新日期: 2023-09-27 18:31:01
我正在开发一个更新程序,它下载一个更新列表.xml文件,其中包含有关FTP服务器上文件的信息(哈希代码,文件名和文件目录)。
然后,它在本地计算机上获取这些文件的信息,如果它们不同(基于哈希代码),更新程序将继续从 ftp 服务器下载更新的文件。
这很好用,但是在txt文件方面我遇到了一个小问题。基本上,当我写入文件时,它不会写入以 null 结尾的字符串,例如:
这是FTP服务器上的文件:
"Come Lads! How does things go?
I see my youth in you and it makes
下载到本地计算机后,这是相同的文件:
"Come Lads! How does things go?I see my youth in you and it makes
我一直在互联网上搜索信息,但我不明白如何解决这个问题。
这是一段代码,我认为这是重要的部分。
FileStream file;
file = File.Open(downloadFilePath, FileMode.Create);
byte[] buffer = new byte[1024 * 30];
int read;
long downloaded = 0;
while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
downloaded += read;
string text = string.Format("Descargando archivo {0} de {1}: {2} - {3} / {4}", curFiles, totalFiles,
xn["Name"].InnerText, BytesToString(downloaded), BytesToString(contentLength));
label_progreso.Text = text;
progressBar2.Value = (int)ProgressBarValue(downloaded, contentLength);
file.Write(buffer, 0, read);
}
显然,问题在于当程序创建和写入文件时,它不会写入以空结尾的字符串。
我错过了什么?
我使用webclient.download而不是FtpWebRequest找到了信息,我已经尝试过,但它也不起作用。
您应该始终关闭FileStream
对象。尝试使用语句
using(FileStream file = File.Open(downloadFilePath, FileMode.Create))
{
//code
}