如何得到文件的全路径?(100分)

  • 主题发起人 主题发起人 leon0309
  • 开始时间 开始时间
L

leon0309

Unregistered / Unconfirmed
GUEST, unregistred user!
已知一个三层目录,只知道第一层的目录名,第二层会有N个目录,文件就放在第二层的目录中。如果已经知道其中的一个文件的文件名。如何得到此文件的全路径?也就是说如何通过已知文件名,得到其所在的目录名。
请教!!!!!!!!!!!!!!!!!!!!!!!!!
 
用findfirst/findnext查找吧,如有同名的文件,那机器也没有办法。只能说你设计有问题。呵呵。
至于怎么用,可以查找一下,N多。
 
只知道文件名?那只能一个目录一个目录找了。
 
dir 文件名 /s
 
ExtractFilePath(FileName)试过了吗?
 
对!用ExtractFilePath函数肯定可以的。
 
用ExtractFilePath(FileName)是已知全路径的前提下,而现在只知道文件名,只能遍例目录中的文件啦。
 
只能遍历,没有简便方法的
我常常是把文件信息专门存放在一个地方
 
这个构架是你自己建的吗?如果是的话,能不能考虑将这结构的相关信息存入到数据库或者INI文件中,便于搜索和整理
 
感谢大家。
 
ExtractFilePath(FileName)
 
刚引用过:
//在资料里找找吧,这个应该是最经典的了:
//遍历指定目录下的所有文件
procedure FindFiles(APath, AFile: string;Strings1:Tstrings);
var
FindResult: integer;
FSearchRec, DSearchRec: TSearchRec;
function IsDirNotation(ADirName: string): Boolean;
begin
Result := ((ADirName = '.') or (ADirName = '..'));
end;
begin
if APath[Length(APath)] <> '/' then
APath := APath + '/';
FindResult := FindFirst(APath + AFile, faAnyFile + faHidden +faSysFile + faReadOnly, FSearchRec); //在根目录中查找指定文件
try
while FindResult = 0 do
begin
Strings1.Add(APath + FSearchRec.Name);
FindResult := FindNext(FSearchRec); // 查找下一个指定文件
end;
FindResult := FindFirst(APath + '*.*', faDirectory, DSearchRec); //进入当前目录的子目录继续查找
while FindResult = 0 do
begin
if ((DSearchRec.Attr and faDirectory) = faDirectory) and not IsDirNotation(DSearchRec.Name) then
FindFiles(APath + DSearchRec.Name, AFile,Strings1); //递归调用FindFiles函数
FindResult := FindNext(DSearchRec);
end;
finally
FindClose(FSearchRec);
end;
end;
 
后退
顶部