请问高手:如何在服务器上查找已知文件名的文件是否存在?delphi里如何实现

解决方案 »

  1.   

    FileSearch 查找目录中是否有一特定文件。
      

  2.   

    SetCurrentdir(const dir:string):boolean;设置系统当前目录。
      

  3.   

    问题是这样的:
    在远程服务器上查找,比如172.21.123.104下的\aaaData下的文件a?.dat,已知用户名和口令,用fileexist好像不行。
      

  4.   

    发送一个HTTP请求,HEAD /aaaData/a.datWinSocket知道吧?TClientSocket对Win32 sockets API进行了封装设置好
    ClientSocket.Host := '172.21.123.104';
    ClientSocket.Port := 80;
    ClientSocket.ClientType:=ctBlocking;
    ClientSocket.Active := True;然后就是发送适当的HTTP请求SendStr:=SendStr+'HEAD /aaaData/a.dat HTTP/1.0'+#13#10;
    SendStr:=SendStr+'Accept: */*'+#13#10;
    SendStr:=SendStr+'Host: 172.21.123.104'+#13#10;
    SendStr:=SendStr+'Authorization: Basic '+Base64Encode(UserName+':'+Password)+#13#10;//Base64Encode对用户名和密码进行Base64编码
    SendStr:=SendStr+#13#10;
    ClientSocket.Socket.SendText(SendStr);用ClientSocket.Socket.ReceiveBuf按块获取得到的返回的头信息var
      Buf: array[0..1023] of Char;
      Rec:integer;while ClientSocket.Active do
    begin
      Rec := ClientSocket.Socket.ReceiveBuf(Buf, SizeOf(Buf));
      Str := Str + Buf;
      if Rec = 0 then Break;
    end;//404表示文件不存在,200表示成功,这个就不用我说了吧?
      

  5.   

    不用获取全部头信息~~~这样更好var
      Buf: array[0..14] of Char;ClientSocket.Socket.ReceiveBuf(Buf, 15);if Pos('200', Buf)<>0 then
      //成功
    elseif Pos('404', Buf)<>0
      //文件不存在
    else
      //其它请求错误