我对C#编程比较陌生,所以如果我没有正确地解决这个问题,请原谅。
我正在编写一个C#应用程序,它通过TCP / IP使用客户端/服务器通信。我通过某些参数从服务器获取一个文件,该文件在另一台机器上运行(客户端和服务器都在同一网络上)。
我可以设法无问题地获取文件。但是,一旦我收到文件,我希望客户端检查目录,如果文件存在,则将消息发送回服务器。如果没有,请运行获取文件的方法。
void CheckFile()
{
string fileLocation = "C:\";
if (File.Exists(fileLocation))
{
Console.WriteLine("File Exist");
}
else
{
// What do i put here?
}
}
void Main()
{
string fname = "/test.txt"
//Creating streamwriter object to send messages to server
StreamWriter writer = new StreamWriter(serverstream);
writer.AutoFlush = true;
writer.WriteLine(fname);//Sends the file name to the server
}
在main方法中,我使用StreamWriter
将消息发送到服务器。主方法也从服务器获取文件。
答案 0 :(得分:1)
MSDN关于File Exist方法的摘要:
Exists方法不应该用于路径验证,这种方法 仅检查路径中指定的文件是否存在。传递无效 存在的路径返回false。
检查路径是否包含任何路径 无效字符,可以调用GetInvalidPathChars方法 检索对文件系统无效的字符。您可以 还会创建一个正则表达式来测试路径是否有效 为了您的环境。
有关可接受路径的示例,请参阅文件。是 意识到另一个进程可能会对该文件做一些事情 在你调用Exists方法和执行另一个方法之间 对文件的操作,例如Delete。允许路径参数 指定相对或绝对路径信息。相对路径 信息被解释为相对于当前工作 目录。要获取当前工作目录,请参阅 GetCurrentDirectory。如果path描述了一个目录,则使用此方法 返回false。尾随空格将从path参数中删除 在确定文件是否存在之前。
Exists方法返回false 如果在尝试确定指定的文件时是否发生任何错误 存在。这可能会在引发异常的情况下发生,例如 传递带有无效字符或太多字符的文件名,a 磁盘失败或丢失,或者调用者没有权限 阅读文件。
示例代码也来自MSDN:
string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
我获得所有这些信息的链接:
http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx
<强>更新强>
根据您的评论,您希望首先检查文件是否存在我的原始答案将解决。
其次,您要验证下载的内容与服务器上的内容相同。为此,最简单的方法是计算文件的哈希值,并将其与服务器上文件的哈希值进行比较,如果它们相等则文件是彼此的精确副本,如果没有,则下载中出现问题。
查看此MSDN链接以获取MD5哈希
http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5(v=vs.110).aspx
他们的例子非常复杂但是很全面,所以请仔细查看,然后再做一些搜索更简单的实现。