我用Java編寫一個程序來搜索某一段文字這兩種創建文件的方式是一樣的嗎?
的我拿着這3個作爲輸入
- 的目錄,從那裏搜索應該開始
- 文本要搜索
- 如果搜索必須是遞歸的(或不包括目錄內的目錄)
這裏是我的代碼
public void theRealSearch(String dirToSearch, String txtToSearch, boolean isRecursive) throws Exception
{
File file = new File(dirToSearch);
String[] fileNames = file.list();
for(int j=0; j<fileNames.length; j++)
{
File anotherFile = new File(fileNames[j]);
if(anotherFile.isDirectory())
{
if(isRecursive)
theRealSearch(anotherFile.getAbsolutePath(), txtToSearch, isRecursive);
}
else
{
BufferedReader bufReader = new BufferedReader(new FileReader(anotherFile));
String line = "";
int lineCount = 0;
while((line = bufReader.readLine()) != null)
{
lineCount++;
if(line.toLowerCase().contains(txtToSearch.toLowerCase()))
System.out.println("File found. " + anotherFile.getAbsolutePath() + " at line number " + lineCount);
}
}
}
}
當遞歸設置爲true,則程序將返回FileNotFoundException異常
所以,我所提到的網站,從那裏我得到了主意,實施這一方案,並編輯我的程序一點。這是怎麼回事
public void theRealSearch(String dirToSearch, String txtToSearch, boolean isRecursive) throws Exception
{
File[] files = new File(dirToSearch).listFiles();
for(int j=0; j<files.length; j++)
{
File anotherFile = files[j];
if(anotherFile.isDirectory())
{
if(isRecursive)
theRealSearch(anotherFile.getAbsolutePath(), txtToSearch, isRecursive);
}
else
{
BufferedReader bufReader = new BufferedReader(new FileReader(anotherFile));
String line = "";
int lineCount = 0;
while((line = bufReader.readLine()) != null)
{
lineCount++;
if(line.toLowerCase().contains(txtToSearch.toLowerCase()))
System.out.println("File found. " + anotherFile.getAbsolutePath() + " at line number " + lineCount);
}
}
}
}
它的工作完美。這兩個片段之間的唯一區別是創建文件的方式,但它們對我來說看起來是一樣的!
任何人都可以指出我在哪裏搞砸了嗎?
這就是爲什麼我經常在嘗試調試程序時建議使用調試器的原因。如果你仔細查看代碼,你會發現目錄名稱從文件' – 2012-01-10 09:32:19
中缺少... – Sphinx 2012-01-10 09:38:59