如何从java中的文件夹中获取单个文件?

时间:2010-07-29 07:21:21

标签: java file scalability directory

我们的想法是获取一个文件,但我不想列出所有文件。我有指定文件夹的地址,但没有名称。

基本上我想要

findFileInFolder(String folderName)---此方法返回随机文件名或在文件夹上创建的最旧文件

有没有人试过这样做?有什么想法可以避免列出数组中的所有文件,然后选择第一个文件吗?


添加了:

以防万一我不清楚(我真的很抱歉我的英语。请原谅我,如果我听起来有先发制人或咄咄逼人,那真的不是我的意图。)该文件不是由人选择的,而是由机器没有询问或显示文件,除了返回带有FileName

的字符串的方法

String findFileInFolder(String folderName)

就像我评论ram和处理器的使用一样,因为这是一个辅助进程而不是项目的主要进程,所以如果我必须阅读一千多个文件,它将大大降低我的项目的性能:(

谢谢;)


更新:程序在不同的计算机上运行,​​所以如果我只是访问目录而不是“思考”阅读哪个文件会很棒。 = d


希望最后更新:对不起打扰你们:)

从我在答案中读到的答案是没有办法的。我的问题是:你认为有什么好的选择而不是做阵列?我的想法是在文本文件中创建一个索引,并只占用第一行。

4 个答案:

答案 0 :(得分:1)

您可以查看FileFilter课程和public File[] listFiles(FileFilter filter)

使用此方法,您可以根据上次修改日期过滤文件,例如。

在旁注中,为什么要避免列出所有文件,以解决性能问题?

答案 1 :(得分:1)

我决定使用这段代码,这不是我想要的,但它现在可以使用。

  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

答案 2 :(得分:0)

除了列出所有文件并选择所需内容之外,在当前版本的java中无法执行此操作。如果你可以使用java 7,那么有一个FileVisitor类可以在没有列出所有文件的情况下遍历文件夹树。

答案 3 :(得分:-1)

我意识到这是一个旧线程,但这是一个快速而肮脏的方法:

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]);
   }   
}