如何让数组的大小自动增长和缩小?

时间:2011-03-30 16:26:54

标签: java

            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个文件。 如何让程序处理文件夹中的确切文本文件数?

注意:文本文件的数量是动态的。它在文件夹中没有固定数量的文本文件。

5 个答案:

答案 0 :(得分: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()]);

答案 1 :(得分:2)

Java数组的大小是静态的。您应该使用List(其最常用的实现是ArrayList),它可以动态且安全地增长和缩小。更不用说(自Java 5以来)它是通用的,即类型安全。

答案 2 :(得分:0)

跟踪您阅读的文本文件的数量,或使用具有尺寸属性的List

答案 3 :(得分:0)

您是否尝试使用像

这样的列表
 List<String> fileName = new ArrayList<String>();

或者您可以保留您拥有的文件数

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

答案 4 :(得分:0)

我不是专家,但我很确定你可以使用arraylist