Java GUI中实现文件拷贝
package cn.edu.hactcm;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
//Download by http://www.codefans.net
//拷貝文件演示
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)上
??panel.add(jtfSourceFile);
??panel.add(selectFile1);
??box.add(panel);?//增加組件到Box上
??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);?//設置目標文件路徑
????}
????? ?}
??}
?}
?public boolean copy(String file1,String file2){?//拷貝文件方法
??try{
???java.io.File fileIn=new java.io.File(file1);?//用路徑名生成源文件
???java.io.File fileOut=new java.io.File(file2);?//用路徑名生成目標文件
???FileInputStream fin=new FileInputStream(fileIn);?//得到文件輸入流
???FileOutputStream fout=new FileOutputStream(fileOut);?//得到文件輸出流
???byte[] bytes=new byte[1024];?//初始化字節數組,用于緩沖
???int c;
???while((c=fin.read(bytes))!=-1){?//如果文件未讀完
????fout.write(bytes,0,c);?//將讀取的字節數組寫入目標文件輸出流中
???}
???fin.close();?//關閉輸入流
???fout.close();?//關閉輸出流
???return true;
??}
??catch(Exception e){
???return false;
??}
?}
?public static void main(String[] args){
??new CopyFileDemo();
?}
}
總結
以上是生活随笔為你收集整理的Java GUI中实现文件拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么不吃蛋黄 蛋黄的营养价值与食用注意
- 下一篇: Java中实现的各种排序算法