拖拽文件按照指定大小进行拆分

DropDragSupportTextArea.java

import java.awt.datatransfer.DataFlavor;  
import java.awt.datatransfer.Transferable;  
import java.awt.datatransfer.UnsupportedFlavorException;  
import java.awt.dnd.DnDConstants;  
import java.awt.dnd.DropTarget;  
import java.awt.dnd.DropTargetDragEvent;  
import java.awt.dnd.DropTargetDropEvent;  
import java.awt.dnd.DropTargetEvent;  
import java.awt.dnd.DropTargetListener;  
import java.io.File;  
import java.io.FileInputStream;
import java.io.IOException;  
import java.util.List;  
import javax.swing.JTextArea;  
  
/** 
 * 
 * @author Administrator 
 */  
public class DropDragSupportTextArea extends JTextArea implements DropTargetListener{  
    private DropTarget dropTarget;  
  
    public DropDragSupportTextArea() {  
        //注册DropTarget,并将它与组件相连,处理哪个组件的相连  
        //即连通组件(第一个this)和Listener(第二个this)  
        dropTarget = new DropTarget(this,DnDConstants.ACTION_COPY_OR_MOVE, this, true);  
    }  
      
    /** 
     * 拖入文件或字符串,这里只说明能拖拽,并未打开文件并显示到文本区域中 
     */  
    @SuppressWarnings("static-access")
    public void dragEnter(DropTargetDragEvent dtde){
    	
    }
	
    public void dragOver(DropTargetDragEvent dtde) {  
        
    }  
  
    public void dropActionChanged(DropTargetDragEvent dtde) {  
         
    }  
  
    public void dragExit(DropTargetEvent dte) {  
          
    }  
  
    public void drop(DropTargetDropEvent dtde) {  
          
    }  
  
}  
DropDragu.java
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DropTargetDragEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;

public class DropDragu extends DropDragSupportTextArea{
	
	public void dragEnter(DropTargetDragEvent dtde) {
        DataFlavor[] dataFlavors = dtde.getCurrentDataFlavors();  
        if(dataFlavors[0].match(DataFlavor.javaFileListFlavor)){  
            try {  
                Transferable tr = dtde.getTransferable();  
                Object obj = tr.getTransferData(DataFlavor.javaFileListFlavor);  
                List<File> files = (List<File>)obj;  
                for(int i = 0; i < files.size(); i++){
                	append("文件名称:"+files.get(i).getName()+"\r\n"); 
                    append("文件位置:"+files.get(i).getAbsolutePath()+"\r\n");  
                    File file = new File(files.get(i).getAbsolutePath());
                    FileInputStream fis = null;
                    try{
                        fis = new FileInputStream(file);  
                        append("文件大小::"+String.valueOf(fis.available()/1024)+"k"+"\r\n");

                    }catch(IOException e1){   
                        System.out.println("文件异常!");
                    } 
                    append("======================"+"\r\n");
                    append("执行拆包操作开始,以10M为拆分单位,wait..."+"\r\n");
                    try {
                        UnpackTest ut = new UnpackTest();
						ut.filesplit(files.get(i).getAbsolutePath(),10485760);
					} catch (Exception e) {
						e.printStackTrace();
					} 
                    append("执行拆包操作成功!文件共计拆分:"+Math.ceil(fis.available()/10485760.0)+"个"+"\r\n");
                    append("======================"+"\r\n");
                }
            } catch (UnsupportedFlavorException ex) {  
  
            } catch (IOException ex) {  
  
            }  
        }  
    }  

}

DropDragDemo.java

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;  
import javax.swing.JFrame;  
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;  
import javax.swing.JScrollPane;  
import javax.swing.JTextArea;  
import javax.swing.WindowConstants;  
  
/** 
 * 
 * @author Xu 
 * 实现Swing文件拖拽 ,文件组拆的功能
 */  
public class DropDragDemo extends JFrame{  
	

	public DropDragDemo(){
		
		 JFrame frame = new JFrame("文件拆包");  
	        frame.setSize(500, 400);  //设置窗口大小
	        frame.setResizable(false);  //窗口不可改变大小
	        frame.setLocationRelativeTo(null);  //窗口显示在屏幕中央
	        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  
	  
	        JPanel panel = new JPanel();  
	        panel.setBorder(BorderFactory.createTitledBorder("文件拆包工具"));  
	        DropDragu textArea = new DropDragu();  //执行操作的对象
	        JScrollPane jsp = new JScrollPane();  
	        jsp.setViewportView(textArea);  
	        textArea.setColumns(40);  
	        textArea.setRows(20);  
	          
	        panel.add(jsp);  
	        frame.add(panel);  
	        frame.setVisible(true);  
	}
	

    public static void main(String[] args){  
       new DropDragDemo();

      }  
}  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值