import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class CopyFileDemo extends JFrame{
JFileChooser fileChooser;//文件选择器
JTextField jtfSourceFile;//源文件路径
JTextField jtfTargetFile;//目标文件路径
JButton selectFile1;//源文件的选择按钮
JButton selectFile2;//目标文件的选择按钮
JButton copyButton;//拷贝按钮
public CopyFileDemo(){
super("文件复制");
fileChooser=new JFileChooser();
//得到容器
Container container=getContentPane();
jtfSourceFile=new JTextField(16);//实例化
jtfTargetFile=new JTextField(16);
selectFile1=new JButton("选择");
selectFile2=new JButton("选择");
copyButton=new JButton("拷贝");
Box box=Box.createVerticalBox();//实例化box,用于容器组件
JPanel panel=new JPanel();
panel.add(new JLabel("源文件"));
panel.add(jtfSourceFile);
panel.add(selectFile1);
box.add(panel);
panel=new JPanel();
panel.add(new JLabel("目标文件"));
panel.add(jtfTargetFile);
panel.add(selectFile2);
box.add(panel);
box.add(copyButton);
container.add(box);//将组件放置到容器里
//选择按钮的监听事件
selectFile1.addActionListener(new SelectFileListener());
selectFile2.addActionListener(new SelectFileListener());
//拷贝按钮事件
copyButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
//文件拷贝
String sourceFile=jtfSourceFile.getText();//获取源文件文本框里的路径
String targetFile=jtfTargetFile.getText();//获取目标文件文本框里的路径
if(copy(sourceFile,targetFile)){//拷贝文件
JOptionPane.showMessageDialog(CopyFileDemo.this, "拷贝成功");
}else{
JOptionPane.showMessageDialog(CopyFileDemo.this, "拷贝失败");
}
}
});
setSize(340,160);//设置窗体大小
setVisible(true);//设置可见
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭窗口时退出程序
}
//选择按钮的监听事件
class SelectFileListener implements ActionListener{
public void actionPerformed(ActionEvent event){
//避免多次打开选择器
if(fileChooser.showOpenDialog
(CopyFileDemo.this)==JFileChooser.APPROVE_OPTION){
String fileName=fileChooser.getSelectedFile().getAbsolutePath();//得到选择文件的绝对路径
if(event.getSource().equals(selectFile1)){//判断事件来自哪个按钮
jtfSourceFile.setText(fileName);//设置源文件路径
}else{
jtfTargetFile.setText(fileName);//设置目标文件路径
}
}
}
}
//文件拷贝的方法,file1源文件路径,file2目标文件路径
public boolean copy(String file1,String file2)
{
try {
File fileIn=new File(file1);//用路径名生成源文件
File fileOut=new File(file2);//用路径名生成目标文件
FileInputStream fin=new FileInputStream(fileIn);//文件的输入流
FileOutputStream fout=new FileOutputStream(fileOut);//得到文件的输出流
byte[] bytes=new byte[1024];//初始化字节数组,用于缓冲
int c=0;
while((c=fin.read(bytes))!=-1){//循环读取,如果文件未读完
fout.write(bytes, 0, c);
}
fin.close();
fout.close();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public static void main(String[] args){
new CopyFileDemo();
}
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class CopyFileDemo extends JFrame{
JFileChooser fileChooser;//文件选择器
JTextField jtfSourceFile;//源文件路径
JTextField jtfTargetFile;//目标文件路径
JButton selectFile1;//源文件的选择按钮
JButton selectFile2;//目标文件的选择按钮
JButton copyButton;//拷贝按钮
public CopyFileDemo(){
super("文件复制");
fileChooser=new JFileChooser();
//得到容器
Container container=getContentPane();
jtfSourceFile=new JTextField(16);//实例化
jtfTargetFile=new JTextField(16);
selectFile1=new JButton("选择");
selectFile2=new JButton("选择");
copyButton=new JButton("拷贝");
Box box=Box.createVerticalBox();//实例化box,用于容器组件
JPanel panel=new JPanel();
panel.add(new JLabel("源文件"));
panel.add(jtfSourceFile);
panel.add(selectFile1);
box.add(panel);
panel=new JPanel();
panel.add(new JLabel("目标文件"));
panel.add(jtfTargetFile);
panel.add(selectFile2);
box.add(panel);
box.add(copyButton);
container.add(box);//将组件放置到容器里
//选择按钮的监听事件
selectFile1.addActionListener(new SelectFileListener());
selectFile2.addActionListener(new SelectFileListener());
//拷贝按钮事件
copyButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event){
//文件拷贝
String sourceFile=jtfSourceFile.getText();//获取源文件文本框里的路径
String targetFile=jtfTargetFile.getText();//获取目标文件文本框里的路径
if(copy(sourceFile,targetFile)){//拷贝文件
JOptionPane.showMessageDialog(CopyFileDemo.this, "拷贝成功");
}else{
JOptionPane.showMessageDialog(CopyFileDemo.this, "拷贝失败");
}
}
});
setSize(340,160);//设置窗体大小
setVisible(true);//设置可见
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭窗口时退出程序
}
//选择按钮的监听事件
class SelectFileListener implements ActionListener{
public void actionPerformed(ActionEvent event){
//避免多次打开选择器
if(fileChooser.showOpenDialog
(CopyFileDemo.this)==JFileChooser.APPROVE_OPTION){
String fileName=fileChooser.getSelectedFile().getAbsolutePath();//得到选择文件的绝对路径
if(event.getSource().equals(selectFile1)){//判断事件来自哪个按钮
jtfSourceFile.setText(fileName);//设置源文件路径
}else{
jtfTargetFile.setText(fileName);//设置目标文件路径
}
}
}
}
//文件拷贝的方法,file1源文件路径,file2目标文件路径
public boolean copy(String file1,String file2)
{
try {
File fileIn=new File(file1);//用路径名生成源文件
File fileOut=new File(file2);//用路径名生成目标文件
FileInputStream fin=new FileInputStream(fileIn);//文件的输入流
FileOutputStream fout=new FileOutputStream(fileOut);//得到文件的输出流
byte[] bytes=new byte[1024];//初始化字节数组,用于缓冲
int c=0;
while((c=fin.read(bytes))!=-1){//循环读取,如果文件未读完
fout.write(bytes, 0, c);
}
fin.close();
fout.close();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public static void main(String[] args){
new CopyFileDemo();
}
}