2010-07-29 44 views
3

这个想法是采取一个单一的文件,但我不想列出所有的文件。我有指定文件夹的地址,但没有名称。如何从java文件夹中获取单个文件?

基本上我想

findFileInFolder(字符串文件夹名)---这个方法返回一个随机文件名或文件夹

上创建最早的文件有没有人曾试过这样做呢?任何想法,以避免列出数组中的所有文件,然后采取第一个?


补充:

万一我不清楚(我为我的英语真的对不起,请原谅我,如果我听起来优生或侵略它真的不是我的意图。)文件不被人选择的,它是由计算机选择,而没有要求或显示除外返回与文件名

字符串findFileInFolder(字符串文件夹名)

就像我评论的字符串的方法该文件是为使用因为第三方公羊和处理器是是次要的过程和项目不是主要的,所以如果我要读超过一千文件,也大大减少我的项目:(

感谢的表现;)


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


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

从我的答案读也没办法。我的问题是:你认为什么样的替代方案可以替代阵列?我的想法是在文本文件中创建一个索引,并只取第一行。

+0

将文件读入数组,然后随机选择一个条目有什么错?对于'给我一个随机文件'通常没有文件系统的方法,所以你必须找出哪些文件是可用的 - 通过读取它们到一个数组中。 – relet 2010-07-29 07:30:46

+0

没有一个真正的问题,但我想减少RAM的用法,以及本节对程序的处理,如果我必须列出超过一千个文件的数组,这是一个有意义的数字 – Saikios 2010-07-29 07:37:13

+0

If你期望目录中有很多文件,你可以看看java.nio.file.DirectoryStream – relet 2010-07-29 08:11:13

回答

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

0

除了列出所有文件并选择所需内容之外,在当前版本的Java中没有办法做到这一点。如果您可以使用java 7,则有一个FileVisitor类,它可以遍历文件夹树而不列出所有文件。

+0

我不能=(另一个我选择的是做一个索引文件并逐个删除,但这不是我的想法,我不想拥有这个神奇的文件,因为它也会杀死我的性能:-S – Saikios 2010-07-29 09:07:12

+0

您是否运行过有关File.list()性能的任何基准测试?它是一种仅返回文件名数组的本机方法,因此千位字符串不是很多 – 2010-07-29 10:25:19

+0

成千上万人只是想说点什么,它可能会是很多不同的进程和计算机同时运行,我会将它添加到信息中 – Saikios 2010-07-29 10:48:20

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

这与OP所要求的完全相反*,即他说:“任何想法,以避免列出阵列中的所有文件,然后采取第一个?” – b4hand 2015-01-16 17:31:39

+0

我没有列出任何东西,只是从文件夹中选择一个随机文件,这是不是他要求的? – 2015-01-16 22:38:01

+0

行'String [] children = dir.list();'正在执行列表。 – b4hand 2015-01-16 22:46:04

相关问题