java copy 目录_java复制整个目录及文件

这是一个Java程序,用于从用户选择的源目录复制文件到目标目录。程序通过JFrame和Swing组件创建图形用户界面,用户可以输入或选择源目录和目标目录,点击按钮启动文件复制过程。程序使用FileInputStream和FileOutputStream进行文件读写,实现了递归复制目录及其中的文件。
摘要由CSDN通过智能技术生成

import java.io.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

public class CopyFiles extends JFrame implements ActionListener,Runnable{

public static void main(String[] args) {

CopyFiles cf=new CopyFiles();

}

JTextField tx1=new JTextField();

JTextField tx2=new JTextField();

JTextArea ta=new JTextArea();

CopyFiles(){

JFrame w=new JFrame();

w.setSize(450,500);

w.setLocationRelativeTo(null);

JLabel l1=new JLabel("源目录:");

JLabel l2=new JLabel("目标目录:");

JButton b1=new JButton("源目录");

JButton b2=new JButton("目标目录");

JScrollPane sp=new JScrollPane(ta);

JButton b3=new JButton("复制");

JPanel p1=new JPanel();

p1.setLayout(new GridLayout(2,3));

p1.add(l1);

p1.add(tx1);

p1.add(b1);

p1.add(l2);

p1.add(tx2);

p1.add(b2);

w.setLayout(new BorderLayout());

w.add(p1,BorderLayout.NORTH);

w.add(sp,BorderLayout.CENTER);

w.add(b3,BorderLayout.SOUTH);

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

w.setVisible(true);

}

@Override

public void run() {

copy(new File(tx1.getText()),new File(tx2.getText()));

}

public void copy(File f,File t){

String newDir=t.getPath()+"\\"+f.getName();

ta.append("正在创建目录"+newDir+"...\n");

File newDirFile=new File(newDir);

newDirFile.mkdir();

File sub[]=f.listFiles();

for(File s:sub){

if(s.isDirectory()){

copy(s,newDirFile);

}

if(s.isFile()){

ta.append("正在复制文件"+s+"...\n");

copyFile(s,new File(newDir+"/"+s.getName()));

}

}

}

public void copyFile(File from,File to){

try{

FileInputStream fis=new FileInputStream(from);

FileOutputStream fos=new FileOutputStream(to);

byte[] tmp=new byte[8192];

int len=fis.available()/8192;

for(int i=0;i

fis.read(tmp);

fos.write(tmp);

}

int size=fis.read(tmp);

fos.write(tmp,0,size);

fos.close();

}catch(Exception e){}

}

@Override

public void actionPerformed(ActionEvent e) {

if(e.getActionCommand().equals("源目录")){

JFileChooser jc=new JFileChooser();

jc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

jc.showOpenDialog(this);

File choosefile=jc.getSelectedFile();

if(choosefile.exists())

tx1.setText(choosefile.getPath());

}

if(e.getActionCommand().equals("目标目录")){

JFileChooser jc=new JFileChooser();

jc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

jc.showOpenDialog(this);

File choosefile=jc.getSelectedFile();

if(choosefile.exists())

tx2.setText(choosefile.getPath());

}

if(e.getActionCommand().equals("复制")){

Thread t=new Thread(this);

t.start();

}

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2014-06-03 17:48

浏览 543

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值