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

如何在java中从文件夹中获取单个文件?,java,file,scalability,directory,Java,File,Scalability,Directory,我的想法是只取一个文件,但我不想列出所有的文件。我有指定文件夹的地址,但没有名称 基本上我想要 FindFileInfo文件夹(String folderName)--此方法返回一个随机文件名或在文件夹上创建的最旧文件 有人试过这样做吗?有没有办法避免在数组中列出所有文件,然后取第一个 增加: 以防万一我不清楚(我真的很抱歉我的英语。请原谅我,如果我听起来很强势或咄咄逼人,这真的不是我的意图。)文件不是由人选择的,它是由机器选择的,没有询问或显示文件,除了返回带有文件名的字符串的方法 字符串F

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

基本上我想要

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

有人试过这样做吗?有没有办法避免在数组中列出所有文件,然后取第一个


增加:

以防万一我不清楚(我真的很抱歉我的英语。请原谅我,如果我听起来很强势或咄咄逼人,这真的不是我的意图。)文件不是由人选择的,它是由机器选择的,没有询问或显示文件,除了返回带有文件名的字符串的方法

字符串FindFileInfo文件夹(字符串文件夹名称)

我的评论是针对ram和处理器的使用,因为这是一个次要过程,而不是项目的主要过程,因此如果我必须读取1000多个文件,这将大大降低项目的性能:(

谢谢;)


更新:这个程序运行在不同的计算机上,所以如果我可以访问目录,而不是“思考”读取哪个文件,那就太好了=D


希望最后更新:抱歉打扰你们:)

从我读到的答案来看,没有办法。我的问题是:你认为有什么好的替代方法来代替数组?我的想法是在文本文件中创建一个索引,只取第一行。

您可以查看类和

例如,使用此方法,您将能够根据文件的上次修改日期筛选文件


另一方面,出于性能考虑,为什么要避免列出所有文件?

在当前版本的java中,除了列出所有文件并选择所需文件之外,没有其他方法可以做到这一点。如果您可以使用java 7,那么有一个类可以遍历文件夹树而不列出所有文件。

我决定使用这段代码,这并不完全是我想要的,但它现在可以工作

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

  }
public静态字符串getFileToCrawl(字符串目录){
文件目录=新文件(目录);
String[]children=dir.list();
if(children==null){
返回“”;
}否则{
int i=0;
字符串文件名=子项[i];

虽然(i我意识到这是一个旧线程,但这里有一个快速而肮脏的方法:

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

将文件读入数组,然后随机选择一个条目有什么不对?通常没有“给我一个随机文件”的文件系统方法,因此您必须通过将文件读入数组来确定哪些文件可用。这并没有实际问题,但我想将ram的使用量降至最低,并且这一部分的过程也会进入程序,如果我必须列出一个包含一千多个文件的数组,这是一个有意义的数字如果你希望目录中有很多文件,你可以查看java.nio.file.directoryStream如果我使用它,我不需要阅读整个目录吗?(真的很抱歉英文版)谢谢你的回答=(我不能=(,我的另一个选择是对文件建立索引并逐个删除,但这不是我的主意,我不想拥有这个神奇的文件,因为它也会降低我的性能:-你运行过关于file.list()的任何基准测试)性能?这是一个本机方法,只返回一个文件名数组,所以千个字符串并不是那么多。千个字符串只是想说些什么,它可能会是很多不同的进程和计算机同时运行,我将在信息中添加它。这与OP要求的正好相反,即他说:“有没有办法避免在一个数组中列出所有文件,然后取第一个?”我没有列出任何东西,只是从文件夹中随机选择一个文件。这不是他要求的吗?行
String[]children=dir.list();
正在列出。