Java FileDialog 浏览和读取文件

标签 java user-interface swt

我有一个使用 FileDialog 浏览文件的按钮。我需要读取我选择的文件中的所有行,我尝试了很多方法,但对我没有任何作用:( 我有另一个按钮,当我按下它时,它会读取文件并打印它。

        Button btnBrowse = new Button(composite_2, SWT.NONE);
    btnBrowse.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog fileBrowse = new FileDialog(pmComp, SWT.MULTI);
            fileBrowse.setFilterExtensions(new String[] {"*.txt"});
            String filePath = fileBrowse.open();
            if (filePath != null) {
                StringBuffer buf = new StringBuffer();
                files = fileBrowse.getFileNames();
                for (int i = 0, n = files.length; i < n; i++) {
                  buf.append(fileBrowse.getFilterPath());
                  if (buf.charAt(buf.length() - 1) != File.separatorChar) {
                    buf.append(File.separatorChar);
                  }
                  buf.append(files[i]);
                  buf.append("\n");
                }
                for (int i = 0, n = files.length; i < n; i++) {
                    listViewer.add(files[i]);
                }

                System.out.println(buf);

            }
        }
    });

最佳答案

查看示例代码:

这里btnBrowseFile是我们需要选择文件的按钮

this.btnBrowseFile.addListener(SWT.Selection, event -> {
        final Shell shell = this.getShell();
        final FileDialog dialog = new FileDialog(shell, SWT.OPEN);
        dialog.setText("Select valid text file");
        dialog.setFilterExtensions("*.txt");
        String selectedFileStr = dialog.open();
        if (selectedFileStr != null && !selectedFileStr.isEmpty()) {
            final Stream<String> lines = Files.lines(Paths.get(selectedFileStr), StandardCharsets.UTF_8);
            List<String> readList = lines.collect(Collectors.toList());
            lines.close();
            readList.forEach(line -> {
                System.out.println(line);
                // Do your work
            });
        }
    });

关于Java FileDialog 浏览和读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52025190/

相关文章:

java - 将ActiveMQ从5.4.2升级到5.11.1

java - 无需创建新对象即可创建文本菜单的优化方法

java - 如何插入二叉搜索树上的下一个可用节点?

java - 水平滚动条在 CTabItem 内的复合下不起作用

java - 输入流返回null

java - 使用 spring boot 将 JSON 反序列化为具有通用对象列表的 POJO

java - SWT - 工作区和 EPackage 注册表浏览

java - 在 SWT TableViewer 中对齐图像

java - 如何保留 ImageIcon 的文件名以供以后引用?

java - 在 Java 中创建流畅的通知窗口的最佳方法是什么?