java列出子文件夹中的txt文件

时间:2011-07-10 07:43:44

标签: java

您好我有一个jlist,目前正在查看文件夹+子文件夹...现在我想更改此内容以查看子文件夹中的文件。请在下面找到我目前使用的代码:

 jList1.setModel(new javax.swing.AbstractListModel()
        {

            File folder = new File ("/Assignment_Datex/message_outbox/"); 
            File[] listofFiles = folder.listFiles();



       // @Override
                public int getSize() 
                { return listofFiles.length; }
       // @Override
                public Object getElementAt(int i) 
                { return listofFiles[i];}
            }

            );

enter image description here

现在,正如您在屏幕截图中看到的那样,Jlist只查看文件夹而不是文件中的文件...请帮忙吗?

4 个答案:

答案 0 :(得分:3)

如果你想在一些根文件夹下显示所有文件和文件夹,那么你应该试试这样的...

  1. 获取根文件夹下的文件和文件夹。
  2. 循环遍历它们并检查它是文件还是文件夹。
  3. 如果是文件,则只需添加列表。
  4. 如果文件夹然后将其添加到列表并对该文件夹重复此相同步骤,直到所有文件夹和文件都已移动。

  5. 我不能在这里生成完整的代码,但这是原型:

    void addFilesToList(File folder){
       File[] listofFiles = folder.listFiles();
       for(File file:listofFile){
          if(file.isFile()) // --- file
             list.add(file.getName());
          else{             // --- folder
             addFileToList(file);
          }
       }
    }
    

    以上代码未经过测试,因此可能需要对其进行修改以满足您的需求。

答案 1 :(得分:1)

@Harry Joy是对的。 此外,您还可以使用jakarta项目中的FindFile。它可以节省您的时间。

答案 2 :(得分:0)

您创建了一个构造函数来初始化您的类,并在那里放置(测试并正常工作


        // initialize the class variable
        listofFiles = new ArrayList();     
        // initialize with the path
        File f = new File("/home/albertmatyi/Work/python/");
        // create a temporary list to work with
        LinkedList files = new LinkedList();
        // fill it with the contents of your path
        files.addAll(Arrays.asList(f.listFiles()));
        while (!files.isEmpty()) {
            // keep removing elements from the list
            f = files.pop();
            // if it is a directory add its contents to the files list
            if (f.isDirectory()) {
                files.addAll(Arrays.asList(f.listFiles()));
                // and skip the last if
                continue;
            }
            // check if it's a text file, and add it to listofFiles
            if (f.getName().endsWith(".txt"))
                listofFiles.add(f);
        }

<小时/> 编辑:

注意: 我已将listofFiles的类型更改为ArrayList<File>,必须使用以下命令在构造函数中初始化:

listofFiles = new ArrayList<File>();

这样可以更轻松地处理数据 - 无需手动分配更大的空间,以便在需要添加更多文本文件时

答案 3 :(得分:0)

我认为这是阅读文件夹和子文件夹中所有.txt文件的好方法

private static void addfiles (File input,ArrayList<File> files)
    {
        if(input.isDirectory())
        {
            ArrayList <File> path = new ArrayList<File>(Arrays.asList(input.listFiles()));
            for(int i=0 ; i<path.size();++i)
            {
                if(path.get(i).isDirectory())
                {
                    addfiles(path.get(i),files);
                }
                if(path.get(i).isFile())
                {
                    String name=(path.get(i)).getName();
                    if(name.lastIndexOf('.')>0)
                    {
                        int lastIndex = name.lastIndexOf('.');
                        String str = name.substring(lastIndex);
                        if(str.equals(".txt"))
                        {
                            files.add(path.get(i));
                        }
                    }
                }
            }
        }
        if(input.isFile())
        {
            String name=(input.getName());
            if(name.lastIndexOf('.')>0)
            {
                int lastIndex = name.lastIndexOf('.');
                String str = name.substring(lastIndex);
                if(str.equals(".txt"))
                {
                    files.add(input);
                }
            }
        }

    }

现在您有一个文件列表,您可以对其进行一些处理!