我正在尝试通过 NetworkStream 发送文件并在客户端重建它。我可以正确地获取数据(我认为),但是当我使用 BinaryWriter 或 FileStream 对象重新创建文件时,无论我使用什么方法,文件都会在同一点开始被切断。
private void ReadandSaveFileFromServer(ref TcpClient clientATF,ref NetworkStream currentStream, string locationToSave)
{
int fileSize = 0;
string fileName = "";
fileName = ReadStringFromServer(ref clientATF,ref currentStream);
fileSize = ReadIntFromServer(ref clientATF,ref currentStream);
byte[] fileSent = new byte[fileSize];
if (currentStream.CanRead && clientATF.Connected)
{
currentStream.Read(fileSent, 0, fileSent.Length);
WriteToConsole("Log Recieved");
}
else
{
WriteToConsole("Log Transfer Failed");
}
FileStream fileToCreate = new FileStream(locationToSave + "\\" + fileName, FileMode.Create);
fileToCreate.Seek(0, SeekOrigin.Begin);
fileToCreate.Write(fileSent, 0, fileSent.Length);
fileToCreate.Close();
//binWriter = new BinaryWriter(File.Open(locationToSave + "\\" + fileName, FileMode.Create));
//binWriter.Write(fileSent);
//binWriter.Close();
}
当我逐步检查文件名和文件大小时,它们是正确的。byte[] 也被完全填充。关于我接下来可以做什么的任何线索?
提前致谢...
肖恩
编辑!!!:
所以我弄清楚发生了什么。当我读取一个字符串,然后从流中读取 Int 时,字节数组的长度为 256 个索引。所以我对字符串的读取正在接受 int,然后它将破坏其他区域。需要弄清楚这个...