从服务器下载后检查文件是否存在

时间:2014-07-17 13:20:30

标签: c#

我对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将消息发送到服务器。主方法也从服务器获取文件。

1 个答案:

答案 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

他们的例子非常复杂但是很全面,所以请仔细查看,然后再做一些搜索更简单的实现。

相关问题:Calculate MD5 checksum for a file