2014-01-06 2 views
1

Мне нужно сделать два небольших дополнения к этой программе Java.Поиск файла - Java - требуется обновление

  1. Мне нужно, чтобы он показывал полный путь при попытке поиска файла. В данный момент это только показывает мне E:\books\comics\, когда я ищу xmen.txt. В результате я пытаюсь показать это E:\books\comics\xmen.txt.

  2. Мне нужно, чтобы это показало мне, что результаты поиска не найдены, если нет файлов, названных так, как при поиске.

Кроме того, я не обучен 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

Состояние техники [Searching] (http://docs.oracle.com/javase/tutorial/essential/io/ find.html). Только если вы не придерживаетесь основ. –

+0

Здесь нет настоящего ООП, просто класс и рекурсия. Не то, чтобы это действительно проблема в стиле ООП. – 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

Исправлено выше, плюс добавлено 'throws IOException' в метод' main'. – Catchwa

Смежные вопросы