我正在通过套接字传输文件。当我尝试将文件保存到自定义目录时,我使用BinaryWriter函数得到此错误。
private void downloadFromServer()
{
try
{
byte[] buffer = new byte[5000 * 1024];
byte[] incomingFile = new byte[5000 * 1024];
buffer = Encoding.Default.GetBytes(getUserName.Text + "Download"
+ getFileName.Text + "end");
clientSocket.Send(buffer);
activityLog.AppendText("Preparing to download... \n");
while (incomingFile != null)
{
clientSocket.Receive(incomingFile);
int receivedBytesLen = incomingFile.Length;
int fileNameLen = BitConverter.ToInt32(incomingFile, 0);
File.WriteAllBytes(fileDir, incomingFile);
}
activityLog.AppendText("File saved to " + fileDir + "\n");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 0 :(得分:0)
File.WriteAllBytes(fileDir, incomingFile);
需要文件名。从变量名称看起来您正在使用文件夹名称。即应该是@"e:\tempfile.bin"
而不是@"e:\"
。
给定一个字节数组和一个文件路径,此方法打开指定的文件,将字节数组的内容写入文件,然后关闭文件。
请注意,如果fileDir
表示文件名,则应在整个代码中查找其他不太真实的名称...