2010-07-29 78 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

相關問題