2013-11-07 4 views
0

Я хочу, чтобы этот метод возвращал список строк, содержащий все имена файлов в каталоге. Список, который я объявил, возвращается как null из метода. Кто-нибудь знает, почему? Ниже приведен фрагмент кода.Метод с ArrayList, возвращающим нуль

public static String docxList() { 
     String path1 = "E:\\"; 
     String files = null; 
     String display = null; 
     String dpmt=null; 

    //String variables declaration, 
    try{ 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     java.sql.Connection 
     con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","user","pass"); 
     //Database connection Code 
     PreparedStatement ps=con.prepareStatement("select * from EMP_DB where EMP_ID='EI-12'"); 
     ResultSet rs=ps.executeQuery(); 
     rs.next(); 
     dpmt=rs.getString("DEPARTMENT"); 

     path1 =path1+dpmt; //New path generation of specific directory according to user department 

     File folder = new File(path1); 
     File[] listOfFiles = folder.listFiles(); 
     for (int i = 0; i < listOfFiles.length; i++) 
     { 
      if (listOfFiles[i].isFile()) 
      { 
       files = listOfFiles[i].getName(); 
       String filename=files; 
       if(filename.indexOf(".")>0) 
       { 
        filename=files.substring(0,files.lastIndexOf(".")); 
       } 

       display=('<'+"A HREF"+'='+"\""+"PDFs/"+dpmt+"/"+files+"\""+" "+"target"+'='+"\""+"targetiframe"+"\""+'>'+'<'+"font"+" size"+'='+"\"4\""+" color"+'='+"\"white\""+'>'+filename+"</font>"+"<"+"/A"+'>'); 
       //Hyper-linked list of files. 
       ArrayList<String> al=new ArrayList<String>(); 
       al.add(display); 
       //Adding all file names in a directory to a Arraylist.  
      } 
     } 
    } 
    catch(Exception ex) 
    { 
     System.out.print("Exception: "+ex+" in Dpmt Method."); 
     //Exception Display if any. 
    }         

    return al; //ArrayList doesn't generate list of files in the drectory. 
} 
+0

Что вы хотите сделать? – beny23

+5

Это будет * много * легче прочитать ваш код, если вы отформатируете его чисто, с меньшим и более последовательным отступом. –

+0

Отформатируйте свой код правильно, это нечитаемо – m0skit0

ответ

3

Вы объявляете список массивов в области видимости, которая не может быть видна вашим оператором return. Разместите следующее сообщение перед своим для цикла.

ArrayList<String> al = new ArrayList<String>(); 

Таким образом, это будет выглядеть this-

File[] listOfFiles = folder.listFiles(); 
ArrayList<String> al = new ArrayList<String>(); 

for (int i = 0; i < listOfFiles.length; i++) 

.. остальной код ..

EDIT:

Вы должны также изменить свой метод подписи верните список, а не строку.

public static ArrayList<String> docxList() 
+0

. Вы должны указать несоответствие типа возврата. –

+0

@peeskillet Готово. Спасибо. –

0

Вы должны объявить List<String>try/catch за пределами блока, так что в рамках возвращения заявления. Кроме того, ваш тип возврата в настоящее время String, когда вы пытаетесь вернуть List<String>, так что это также необходимо изменить, если вы действительно хотите вернуть List. Ваш метод должен выглядеть так:

public static List<String> docxList() { 
    String path1 = "E:\\"; 
    String files = null; 
    String display = null; 
    String dpmt=null; 
    List<String> al = new ArrayList<String>(); 

    try { 
     // code... 
    } 
    catch(Exception ex) { 
     // handle exception.. 
    }         

    return al; 
} 
Смежные вопросы