加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将TXT文件拖放到TextArea中

发布时间:2020-12-15 02:32:51 所属栏目:Java 来源:网络整理
导读:这里我有一个名为sourceTx的文本区域,我在其中拖放文件,然后用BufferedReader读取该文件的内容.从下面的代码中我可以看到,我设置了文件,我正在使用absolutepath读取内容. 因此,当我拖放一些.txt文件时,它会工作,它会读取内容并将其放在文本区域中,但是当我也
这里我有一个名为sourceTx的文本区域,我在其中拖放文件,然后用BufferedReader读取该文件的内容.从下面的代码中我可以看到,我设置了文件,我正在使用absolutepath读取内容.

因此,当我拖放一些.txt文件时,它会工作,它会读取内容并将其放在文本区域中,但是当我也拖放一些文件夹时,例如它也会读取一些内容并将其放在文本区域中.

所以我想把这个拖放设置为只读.txt文件?我怎么能得到那个?

这是该方法的代码:

public void dragDrop(){

       sourceTx.setOnDragOver(new EventHandler <DragEvent>()  {
        @Override
        public void handle(DragEvent event) {

            Dragboard db = event.getDragboard();

            if(db.hasFiles()){
                event.acceptTransferModes(TransferMode.ANY);

                for(File file:db.getFiles()){
                    String absolutePath = file.getAbsolutePath();
                    BufferedReader br = null;
                    try {
                        br = new BufferedReader(new InputStreamReader(new FileInputStream(absolutePath)));

                        String line = null;
                        String text = "";

                        String nl = System.getProperty("line.separator","n");

                        while((line = br.readLine()) != null)
                            text += line + nl;

                        sourceTx.setText( text.trim() );

                    } catch (Exception e) {
                        MessageBox.show(MessageBoxType.ERROR,I18n.localize("File Error"),I18n.localize("Error while reading content from selected file"));
                    } finally{
                        if(br != null)
                            try {
                                br.close();
                            } catch (Exception e) {}
                    }

                }

            }else{
                event.setDropCompleted(false);
            }

            event.consume();
        }
    });
}

解决方法

您好,尝试用递归读取您的文件

...
for (File file : db.getFiles()) {
    sourceTx.setText(handleFile(file));
}
...
    private String handleFile(File file) {
            String ret = "";
            if (file.isDirectory()) {
                for (File f : file.listFiles()) {
                    ret.concat(handleFile(f));
                }
            } else {
                /*this is your filereader*/
                String absolutePath = file.getAbsolutePath();
                BufferedReader br = null;
                try {
                    br = new BufferedReader(new InputStreamReader(new FileInputStream(absolutePath)));

                    String line = null;
                    String text = "";

                    String nl = System.getProperty("line.separator","n");

                    while ((line = br.readLine()) != null)
                        text += line + nl;

                    ret.concat(text.trim());

                } catch (Exception e) {
                    MessageBox.show(MessageBoxType.ERROR,I18n.localize("Error while reading content from selected file"));
                } finally {
                    if (br != null)
                        try {
                            br.close();
                        } catch (Exception e) {
                        }
                }

            }
            return ret;
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读