2012-02-16 1 views
2

У меня есть zip-файл в каталоге, имя которого динамически изменяется. , когда я нажимаю на кнопку, я должен быть в состоянии получить полный путь этого файла плюс имя следующим образом: U:\home\ash\dfi\dfiZipedFile\dfi.zipкак я могу получить имя файла и путь в java?

public static String getFileFullName(BcfiDownloadPanel bcfiDownloadPanel) { 
    File dir = new File("U:\\home\\ash\\dfi\\dfiZipedFile"); 

    String[] filesList = dir.list(); 
    if (filesList == null) { 
     // Either dir does not exist or is not a directory 
    } else { 
     for (int i = 0; i < filesList.length; i++) { 
      // Get filename of file or directory 
      String filename = filesList[i]; 
     } 
    } 
    String fileFullName = filesList[0]; 

    return fileFullName; 
} 
+0

Есть ли только один ZIP в этом каталоге? Как вы знаете каталог, но не имя файла? Как этот код компилируется? –

ответ

3
public static String getFirstZipFilename(File dir) {   
    for (File file : dir.listFiles()) { 
     String filePath = file.getPath(); 
     if (file.isFile() && filePath.endsWith(".zip")) { 
      return filePath; 
     } 
    } 

    return null; 
} 
  • Работает с любой директорией (попробуйте сделать ваши методы подсобного родовыми ...)
  • Возвращает как только действительный файл был найден (без бесполезных тестов)
  • Возвращает NULL, если ничего был найден, поэтому вы можете узнать его и отобразить предупреждающие сообщения
+2

Во-первых, вы никогда не должны использовать утверждения для проверки предусловий в публичном API. Во-вторых, утверждение лишнее, потому что ссылка на dir немедленно устраняется вызовом dir.listFiles(). –

+0

Истина для второго пункта. О первом, зависит от того, должен ли класс использоваться в публичной библиотеке или нет. Однако, в сомнениях, вы правы, я отредактирую ответ. –

1

я был бы ошеломлен, если этот код будет работать.

вы должны заменить \ на \\ в имени файла.

+0

да инди, вы правы. – itro

+0

Это должен быть комментарий к исходному вопросу. –

+0

@ james.garriss Цель состоит в том, чтобы помочь ему. Мой ответ заставит его код скомпилировать, чтобы он был «частью» ответа, а не чистым комментарием. Так что оба работают, либо комментарий, либо ответ. Я честно пошёл за ответ, потому что вышесказанные комментарии не дают вам очков. –

2

Что-то вроде

String ret = null; 

File dir = new File("U:/home/ash/dfi/dfiZipedFile"); 
File[] files = dir.listFiles(); 
for (File file : files) 
{ 
    if (!file.isDirectory()) 
    { 
    ret = file.getPath(); 
    break; 
    } 
} 

return ret; 

возвращает полный путь к первому файлу в каталоге.

+0

это должно быть исправлено, как указано выше. 'File dir = new File (" U: \\ home \\ ash \\ dfi \\ dfiZipedFile "); ' – itro

+0

Как насчет того, есть ли файл с другим вымиранием. Как я могу отказаться от другого расширения? – itro

+0

Вы можете использовать FilenameFilter в listFiles или протестировать filePath с filePath.toLowerCase(). EndsWith (". Zip") – ZehnVon12