【发布时间】:2012-04-14 14:37:53
【问题描述】:
这里有一个名为 sourceTx 的文本区域,我在其中拖放文件,然后使用 BufferedReader 读取该文件的内容。正如您从下面的代码中看到的那样,我设置了使用绝对路径读取内容的文件。
所以,当我拖放一些 .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();
}
});
}
【问题讨论】:
-
可以过滤文件路径名。
-
感谢您的评论,但有没有类似的例子或类似的东西?
-
嗯,你可以找很多例子,但它只是一个简单的过滤器,比如
if (file.getAbsolutePath().toLowerCase().contains(".tif")) //proceed... -
谢谢,我会尝试类似的。
-
是的,实际上@eee 所说的是最简单的方法。
标签: java drag-and-drop javafx javafx-2