在一个目录下所有文件中查找目标字符串,并返回包涵字符串的文件名。(100分)

  • 主题发起人 主题发起人 szwgl
  • 开始时间 开始时间
S

szwgl

Unregistered / Unconfirmed
GUEST, unregistred user!
例如:在c:/temp中,有file1,file2,...file10
要查找的目标字符串是:目标关键字
我能想到的是,把文件打开,一行一行的读取出来,比较每一行是否含有“目标关键字”
一旦某行还有“目标关键字”,就把这个文件名保存下来。
问题1:假设某行末尾是“目标”,下一行的开始是“关键字”,我这种方法就查不出来
了。
问题2:假设满足条件的文件很多,我需要分页显示,这些文件名放在数组中还是放在
数据库中效果好一些。
 
我目前想到的办法就是你的方法了
1、你可以加个判断:如果是#13就跳过去,取下一个字符。
2、我想根据你的需要,如果结果需要永久保存就放在数据库中,反之数组中。
 
如下:不会优化,运行可能会比较慢些 :P
fs := TFileStream.Create('文件名');
try
ss := TStringStream.Create('');
try
ss.LoadFromStream(fs);
strfile := ss.DataString;
for i:=Length(strfile)do
wnto 1do
if strfile=#13 or
strfile=#10 or
strfile=#其它 then
System.Delete(strfile,i,1);//删除当前字符
if Pos('目标关键字',strfile)>0 then
//找到了,上面的文件名就是包含有文件了。
finally
ss.Free;
end;
finally
fs.Free;
end;
 
谢谢上面两位热心得兄弟,我的问题要求用java解决呀。
另外,在java中如何实现打开某个目录下得所以文件????
 
我帮你找出目录下所有文件,打开文件你自己用文件流打开。
//(作用类似于Dir命令)
File ListFile[];
if(args.length != 1) { //由命令行参数读入路径
System.out.println("MyDir使用方法: java ch4_7 <路径>");
return;
}
File FilePath = new File(args[0]);
//生成File对象
if(FilePath.exists() != true) { //若文件不存在则结束程序
System.out.println(FilePath.getPath() + "不存在!!!");
return;
}
if(FilePath.isDirectory()) //若路径为目录时
{
ListFile = FilePath.listFiles();
//取得文件列表
for(int i=0;i<ListFile.length;i++)
{
System.out.print((ListFile.canRead()?"R":"X"));
System.out.print((ListFile.canWrite()?"W":"X"));
System.out.print((ListFile.isHidden()?"H":"X"));
System.out.print((ListFile.isDirectory()?"D":"X") + " ");
System.out.print(new Date(ListFile.lastModified()) + " ");
System.out.print(ListFile.length() + " ");
System.out.print(ListFile.getName() + "/n");
if(ListFile.isFile()) FileCount++;
//计算文件数
else
DirectoryCount++;
//计算目录数
totalSize = totalSize + ListFile.length();//计算文件大小总和
}

System.out.println("/n/t/t目录数: " + DirectoryCount);
System.out.println("/t/t文件数: " + FileCount);
System.out.println("/t/t总字节: " + totalSize);
}
 
谢谢wukw,你得算法对我很有帮助。
 
这个问题我已经搞定了,谢谢各位的帮忙。
 
后退
顶部