Java實現(xiàn)簡易的文件的遷移器

Java作為世界上最受歡迎的一門編程語言纵诞,自然是有原因的苞七。比如說我們可以直接的方便的調(diào)用其中的函數(shù)來實現(xiàn)我們想要的功能。

一個偶然的機會夺衍,我瀏覽API文檔時發(fā)現(xiàn)了一個名為FileDialog的類狈谊,然后就好奇并進行了查看,結(jié)果發(fā)現(xiàn)里面大有文章沟沙,藉此我是信了一個簡單的文件的遷移器河劝。話不多說,請看代碼:

首先我們需要一個業(yè)務(wù)邏輯類矛紫,也就是對文件進行操作的類(我們需要注意的是它的構(gòu)造函數(shù)有兩個參數(shù)赎瞎,這是為了今后的調(diào)用方便而設(shè)計的),使用它來方便的幫助我們對文件進行管理:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileToFile {

private String urlFrom;
private String urlTo;
private FileInputStream fis = null;
private FileOutputStream fos = null;
private BufferedReader reader = null;
private BufferedWriter writer = null;

public FileToFile(String urlFrom, String urlTo) {
    this.urlFrom = urlFrom;
    this.urlTo = urlTo;
    try {
        fis = newFileInputStream(new File(urlFrom));
        fos = newFileOutputStream(new File(urlTo));
        // reader=newBufferedReader(fis);
        // writer=newBufferedWriter(fos);
        int length;
        byte[] buffer = newbyte[1024];
        while ((length =fis.read(buffer)) != -1) {
           fos.write(buffer, 0, length);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if(fis != null) {
               fis.close();
               fis = null;

            }
            if(fos != null) {
               fos.close();
               fos = null;
            }
        } catch (Exception e){
           e.printStackTrace();
        }
    }
}

}

有了業(yè)務(wù)邏輯類颊咬,那么我們還需要一個test類來檢測不是务甥,請看代碼:

import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class TestDemo extends JFrame {

/**
 * 由于次數(shù)是建議的實現(xiàn),所以界面不是很好看喳篇。
 * 需要注意的是Open按鈕的監(jiān)聽函數(shù)內(nèi)的FielDialog的創(chuàng)建及使用
 */
private static final long serialVersionUID = 1L;
private JButton Open, Destination;
private JTextField tf;
private JLabel label = null;
static FileDialog dialog;

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

public TestDemo() {
    Open = new JButton("打開文件的位置<<<<<");
    Destination = new JButton("文件輸出位置敞临,記得先在后面的輸入框中輸入文件路徑及拓展名");
    tf = new JTextField(32);
    label = new JLabel();
    label.setText("在這里顯示一些hint信息");

    this.setTitle("文件遷移器!");
    this.setSize(500, 400);
    this.setVisible(true);
    this.setLocationRelativeTo(null);
   this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setLayout(new FlowLayout());

    this.add(Open);
    this.add(Destination);
    this.add(tf);
    this.add(label, BorderLayout.CENTER);

    Open.addActionListener(newActionListener() {

        @Override
        public voidactionPerformed(ActionEvent e) {
            //TODO Auto-generated method stub
           dialog = new FileDialog(TestDemo.this, "文件窗口",FileDialog.LOAD);
           dialog.show();
           label.setText("文件來源:" +dialog.getDirectory() + "\n"
                   + dialog.getFile());
           System.out.println("文件來源:" +dialog.getDirectory() + "\n"
                   + dialog.getFile());
        }

    });
    
    Destination.addActionListener(newActionListener(){

        @Override
        public voidactionPerformed(ActionEvent e) {
            //TODO Auto-generated method stub
           String urlTo=tf.getText().trim().toString();
           String  urlFrom=dialog.getDirectory()+dialog.getFile().trim().toString();
           try{
               if(urlFrom!=null&&urlTo!=null){
                   FileToFile translator=newFileToFile(urlFrom,urlTo);
                  JOptionPane.showMessageDialog(TestDemo.this, "文件轉(zhuǎn)移完畢:枷丁S窗怼!");
               }else{
                   JOptionPane.showConfirmDialog(null,"請選擇文件來源痰憎,或者確保您填寫了文件的輸出位置及相應(yīng)的拓展名","警告!E屎铣耘!",JOptionPane.YES_NO_OPTION);
               }
           }catch(Exception ex){
               ex.printStackTrace();
               System.out.println("您還沒有選擇相應(yīng)的路徑!");
            }
        }
        
    });
}

}

由此以故,我們便完成了蜗细,是不是感覺很簡單啊 ?俗話說沒有“證據(jù)”不足以讓人信服怒详,那么下面讓我們一起看一下程序完成的效果吧炉媒!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昆烁,隨后出現(xiàn)的幾起案子吊骤,更是在濱河造成了極大的恐慌,老刑警劉巖静尼,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件白粉,死亡現(xiàn)場離奇詭異传泊,居然都是意外死亡,警方通過查閱死者的電腦和手機鸭巴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門眷细,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鹃祖,你說我怎么就攤上這事溪椎。” “怎么了恬口?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵池磁,是天一觀的道長。 經(jīng)常有香客問我楷兽,道長地熄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任芯杀,我火速辦了婚禮端考,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揭厚。我一直安慰自己却特,他們只是感情好,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布筛圆。 她就那樣靜靜地躺著裂明,像睡著了一般。 火紅的嫁衣襯著肌膚如雪太援。 梳的紋絲不亂的頭發(fā)上闽晦,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音提岔,去河邊找鬼仙蛉。 笑死,一個胖子當著我的面吹牛碱蒙,可吹牛的內(nèi)容都是我干的荠瘪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赛惩,長吁一口氣:“原來是場噩夢啊……” “哼哀墓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起喷兼,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤篮绰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后褒搔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阶牍,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡喷面,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了走孽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惧辈。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖磕瓷,靈堂內(nèi)的尸體忽然破棺而出盒齿,到底是詐尸還是另有隱情,我是刑警寧澤困食,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布边翁,位于F島的核電站,受9級特大地震影響硕盹,放射性物質(zhì)發(fā)生泄漏符匾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一瘩例、第九天 我趴在偏房一處隱蔽的房頂上張望啊胶。 院中可真熱鬧,春花似錦垛贤、人聲如沸焰坪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽某饰。三九已至,卻和暖如春善绎,著一層夾襖步出監(jiān)牢的瞬間黔漂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工涂邀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瘟仿,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓比勉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親驹止。 傳聞我的和親對象是個殘疾皇子浩聋,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容