2011-03-30 96 views
0
  int filename = 100; 
    String[] fileName = new String[filename]; 
    int a = 0; 
    int totalCount = 0; 
    int wordCount = 0; 

    // Count the number of documents containing the query 

    System.out.println("Please enter the query :"); 
    Scanner scan2 = new Scanner(System.in); 
    String word2 = scan2.nextLine(); 
    String[] array2 = word2.split(" "); 
    int[] numofDoc = new int[array2.length]; 

    for (int b = 0; b < array2.length; b++) { 

     numofDoc[b] = 0; 

     for (int i = 0; i < filename; i++) { 

      try { 

       BufferedReader bf = new BufferedReader(new FileReader(
         "C:\\Users\\user\\fypworkspace\\FYP\\abc" 
           + i + ".txt")); 

       int matchedWord = 0; 

       Scanner s2 = new Scanner(bf); 

       { 

        while (s2.hasNext()) { 
         if (s2.next().equals(array2[b])) 
          matchedWord++; 
        } 

       } 
       if (matchedWord > 0) 
        numofDoc[b]++; 

      } catch (IOException e) { 
       System.out.println(); 
      } 

     } 
     _resultArea.append(array2[b] 
       + " --> This number of files that contain this term " 
       + numofDoc[b]+ newline); 
    } 

嗨,這是我的代碼,用於計算包含用戶鍵入的特定輸入的文件數。此代碼分析文本文件的文件夾並搜索文本文件是否有輸入。 我現在面臨的問題是,我現在宣佈數組大小爲100.它意味着它將處理100個文本文件,無論該文件夾是否有100個文件。 如何讓程序處理文件夾內的文本文件的確切數量?如何讓數組的大小自動增長和縮小?

注意:文本文件的數量是動態的。它沒有固定數量的文件夾內的文本文件。

回答

0

要麼跟蹤您讀取的文本文件的數量,要麼使用具有size屬性的List

2

Java數組具有靜態大小。您應該使用List(最經常使用的實現是ArrayList),它可以動態安全地增長和縮小。更不用說(自Java 5以來)它是通用的,即類型安全。

0

您是否嘗試過使用列表像

List<String> fileName = new ArrayList<String>(); 

,或者你可以只維護文件的數量,你有

for (int i = 0; i < filenameCount; i++) { 
0

我不是專家,但我敢肯定,你可以使用arraylist

3

查看java.io.File.list(),並使用List

例如:

File[] files = dir.list(); 
List<File> list = new LinkedList<File>(); 
for (File f : files) { 
    if (/* f matches our criteria */) { 
     list.add(f); 
    } 
} 

如果您需要後一個數組,這樣做:

File[] array = list.toArray(new File[list.size()]);