2014-01-06 92 views
1

我需要對這個Java程序做兩個小小的補充。搜索文件 - Java - 需要升級

  1. 當我嘗試搜索文件時,需要使其顯示完整路徑。此時它只顯示我E:\books\comics\當我搜索xmen.txt。我試圖讓它顯示E:\books\comics\xmen.txt作爲結果。

  2. 我需要讓它顯示一個NO結果,如果在搜索時沒有像這樣命名的文件。

此外,我沒有接受過Java培訓,本程序是針對有關「搜索可能性」主題的文書工作任務。我試圖通過在主題中添加面向對象的編程來讓它變得很酷。

class FindFile 
{ 
    public void findFile(String name, File file) 
    { 
     File[] list = file.listFiles(); 
     if(list!=null) 
     for (File fil : list) 
     { 
      if (fil.isDirectory()) 
      { 
       findFile(name,fil); 
      } 
      else if (name.equalsIgnoreCase(fil.getName())) 
      { 
       System.out.println(fil.getParentFile()); 
      } 
     } 
    } 

    public static void main(String[] args) 
    { 
     FindFile ff = new FindFile(); 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Write the file you are trying to find:"); 
     String name = scan.next(); 
     System.out.println("Write the directory where you want to search for the file"); 
     String directory = scan.next(); 
     System.out.println("File was found in: "); 
     ff.findFile(name,new File(directory)); 
    } 
} 
+1

本領域搜索(州http://docs.oracle.com/javase/tutorial/essential/io/ find.html)。只有當你沒有陷入基礎。 –

+0

這裏沒有真正的OOP,只是一個類和一些遞歸。並不是說這真的是OOP風格的問題。 – EJP

回答

1

這樣的事情,這將需要雖然有些工作:

import java.io.*; 
import java.util.*; 
class FindFile 
{ 
    public String findFile(String name,File file) throws IOException 
    { 
     File[] list = file.listFiles(); 
     if (list != null) 
     { 
      for (File fil : list) 
      { 
       if (fil.isDirectory()) 
       { 
        return findFile(name,fil); 
       } 
       else if (name.equalsIgnoreCase(fil.getName())) 
       { 
        return fil.getCanonicalPath(); 
       } 
      } 
     } 
     return null; 
    } 

    public static void main(String[] args) throws IOException 
    { 
     FindFile ff = new FindFile(); 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Write the file you are trying to find:"); 
     String name = scan.next(); 
     System.out.println("Write the directory where you want to search for the file"); 
     String directory = scan.next(); 
     String foundFile = ff.findFile(name,new File(directory)); 
     if (foundFile != null) 
     { 
      System.out.println("File was found in: " + foundFile); 
     } 
     else 
     { 
      System.out.println("File was not found"); 
     } 

    } 
} 
+0

你需要檢查'list'是不是'null'。 –

+0

修正了上面的問題,並在'main'方法中添加了'throws IOException'。 – Catchwa