Как получить один файл из папки в Java? - PullRequest
3 голосов
/ 29 июля 2010

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

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

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

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


Добавлено:

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

String findFileInFolder (String folderName)

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

Спасибо;)


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


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

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

Ответы [ 4 ]

2 голосов
/ 31 июля 2010

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

  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

1 голос
/ 29 июля 2010

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

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

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

0 голосов
/ 16 января 2015

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

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]);
   }   
}
0 голосов
/ 29 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...