Как получить один файл из папки в java?


Идея состоит в том, чтобы взять один файл, но я не хочу перечислять все файлы. У меня есть адрес указанной папки, но не имя.

В основном я хочу

FindFileInFolder (String folderName) - - - этот метод возвращает случайное имя файла или самый старый файл, созданный в папке

Кто-нибудь когда-нибудь пробовал это делать? Есть идеи, чтобы избежать перечисления всех файлов в массиве, а затем взять первый?


Добавлено:

На всякий случай, если меня не будет. ясно (мне очень жаль, что я говорю по-английски. Пожалуйста, простите меня, если я говорю слишком резко или агрессивно, но на самом деле это не мои намерения.) Файл не выбирается человеком, он выбирается машиной без запроса или показа файла, за исключением метода, который возвращает строку с именем файла

String findFileInFolder (String folderName)

Как я комментирую для использования оперативной памяти и процессора, потому что это вторичный процесс, а не первичный проекта, так что если я должен читать более тысячи файлов это значительно снизит производительность моего проекта : (

Спасибо ;)


Update: программа работает на разных компьютерах, так что если бы я мог просто получить доступ к каталогу, не "думая" о чтении, какой файл это было бы здорово. =D


Надеюсь, последнее обновление: извините, что беспокою вас, ребята:)

Из того, что я прочитал на ответах, нет никакого способа. Мой вопрос: какие хорошие альтернативы вместо того, чтобы делать массив, вы бы подумали? Моя идея это создать индекс в текстовом файле и взять только первую строку.

4 3

4 ответа:

Вы можете посмотреть на FileFilter класс и на своем public File[] listFiles(FileFilter filter)

Используя этот метод, вы сможете фильтровать файлы, например, по дате их последнего изменения.

На заметку сбоку, почему вы хотите избежать перечислять все файлы, связанные с выступлениями ?

Я решил использовать этот код, это не совсем то, что я хотел, но сейчас он работает.

  public static String getFileToCrawl(String directory){
      File dir = new File(directory);

      String[] children = dir.list();
      if (children == null) {
          return "";
      } else {
          int i=0;
          String filename = children[i];
          while (i<children.length && !filename.contains(".txt")){
              i++;
              filename = children[i];
          }
          return filename;
      }

  }

Если кому-то это нравится или он знает способ улучшить этот код, это действительно приветствуется ;) если вы хотите использовать его, не стесняйтесь :D

В текущих версиях java нет другого способа сделать это, кроме как перечислить все файлы и выбрать то, что вам нужно. Если вы можете использовать java 7, существует классFileVisitor , который может ходить по дереву папок без перечисления всех файлов.

Я понимаю, что это старая нить, но вот быстрый и грязный способ сделать это:

import java.io.File;
import java.util.Arrays;
import java.util.Collections;

public class Shuffle {
   public static void main(String[] argv) 
   throws Exception {

      File dir = new File(".");
      String[] children = dir.list();
      Collections.shuffle(Arrays.asList(children));
      System.out.println(children[0]);
   }   
}