JFileChooser select directory but show files

后端 未结 9 1765
孤城傲影
孤城傲影 2020-12-11 00:49

I feel like there should be a simple way to do this but I can\'t figure it out. I have a JFileChooser that allows the user to select directories. I want to show all the file

9条回答
  •  自闭症患者
    2020-12-11 01:38

    Select Multiple Folders But Show All Included files

        import javax.swing.*;
        import java.io.File;
        import java.util.ArrayList;
        import java.util.Arrays;
        import java.util.Iterator;
        
        public class MultipleFilesAndDirectoryChooserButDisplayFiles {
            public static void main(String[] args) {
                ArrayList tempFiles = new ArrayList<>();
                ArrayList finalFiles = new ArrayList<>();
                ArrayList relativeFiles = new ArrayList<>();
                JFileChooser fileChooser = new JFileChooser();
                fileChooser.setDialogTitle("Choose File To Transfer");
                fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
                fileChooser.setMultiSelectionEnabled(true);
                int returnVal = fileChooser.showOpenDialog(null);
                fileChooser.approveSelection();
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                    fileChooser.approveSelection();
                    var fileAddress = fileChooser.getSelectedFiles();
                    for (var arrElement : fileAddress) {
                        tempFiles.add(arrElement);
                        File baseFile;
                        baseFile = arrElement.getParentFile();
                        Iterator iterator = tempFiles.iterator();
                        while (iterator.hasNext()) {
                            File file = iterator.next();
                            if (file.isDirectory()) {
                                var enclosedFiles = file.listFiles();
                                if (enclosedFiles != null) {
                                    if (enclosedFiles.length != 0) {
                                        var index = tempFiles.indexOf(file);
                                        tempFiles.remove(file);
                                        tempFiles.addAll(index, Arrays.asList(enclosedFiles));
                                        iterator = tempFiles.iterator();
                                    } else {
                                        tempFiles.remove(file);
                                        finalFiles.add(file);
                                        relativeFiles.add(baseFile.toURI().relativize(file.toURI()).getPath());
                                        iterator = tempFiles.iterator();
                                    }
                                }
                            } else if (file.isFile()) {
                                tempFiles.remove(file);
                                finalFiles.add(file);
                                relativeFiles.add(baseFile.toURI().relativize(file.toURI()).getPath());
                                iterator = tempFiles.iterator();
                            }
                        }
        
        
                    }
                    for (var relativeFile : relativeFiles) {
                        System.out.println(relativeFile);
        
                    }
                    for (var file : finalFiles) {
                        System.out.println(file);
                    }
        
                }
            }
        }
    

    Output:

    • Folder1/EmptyFolder/

    • Folder1/SubFolder1/1.1.txt

    • Folder1/SubFolder1/1.2.txt

    • Folder1/SubFolder1/1.3.txt

    • Folder1/SubFolder1/SubFolder 1.1/1.1.1.txt

    • Folder1/SubFolder1/SubFolder 1.1/1.2.1.txt

    • Folder1/SubFolder1/SubFolder 1.1/1.3.1.txt

    • Folder1/SubFolder2/2.1/2.1.1.txt

    • Folder1/SubFolder2/2.1/2.1.2.txt

    • Folder1/SubFolder2/2.1/2.1.3.txt

    • Folder1/SubFolder3/3.1.txt

    • Folder1/SubFolder3/3.2.txt

    • Folder1/SubFolder3/3.3.txt

    • Folder2/Sub Folder/2.1.txt

    • Folder2/Sub Folder/EmptyFolder/

    • file1.txt

    • file2.txt

    • E:\Folder1\EmptyFolder

    • E:\Folder1\SubFolder1\1.1.txt

    • E:\Folder1\SubFolder1\1.2.txt

    • E:\Folder1\SubFolder1\1.3.txt

    • E:\Folder1\SubFolder1\SubFolder 1.1\1.1.1.txt

    • E:\Folder1\SubFolder1\SubFolder 1.1\1.2.1.txt

    • E:\Folder1\SubFolder1\SubFolder 1.1\1.3.1.txt

    • E:\Folder1\SubFolder2\2.1\2.1.1.txt

    • E:\Folder1\SubFolder2\2.1\2.1.2.txt

    • E:\Folder1\SubFolder2\2.1\2.1.3.txt

    • E:\Folder1\SubFolder3\3.1.txt

    • E:\Folder1\SubFolder3\3.2.txt

    • E:\Folder1\SubFolder3\3.3.txt

    • E:\Folder2\Sub Folder\2.1.txt

    • E:\Folder2\Sub Folder\EmptyFolder

    • E:\file1.txt

    • E:\file2.txt

提交回复
热议问题