Java作为世界上最受欢迎的一门编程语言,自然是有原因的。比如说我们可以直接的方便的调用其中的函数来实现我们想要的功能。

一个偶然的机会,我浏览API文档时发现了一个名为FileDialog的类,然后就好奇并进行了查看,结果发现里面大有文章,藉此我是信了一个简单的文件的迁移器。话不多说,请看代码:

首先我们需要一个业务逻辑类,也就是对文件进行操作的类(我们需要注意的是它的构造函数有两个参数,这是为了今后的调用方便而设计的),使用它来方便的帮助我们对文件进行管理:

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();
        }
    }
}

}

有了业务逻辑类,那么我们还需要一个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 {

/**
 * 由于次数是建议的实现,所以界面不是很好看。
 * 需要注意的是Open按钮的监听函数内的FielDialog的创建及使用
 */
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, "文件转移完毕!!!");
               }else{
                   JOptionPane.showConfirmDialog(null,"请选择文件来源,或者确保您填写了文件的输出位置及相应的拓展名","警告!!!",JOptionPane.YES_NO_OPTION);
               }
           }catch(Exception ex){
               ex.printStackTrace();
               System.out.println("您还没有选择相应的路径!");
            }
        }

    });
}

}

由此,我们便完成了,是不是感觉很简单啊 ?俗话说没有“证据”不足以让人信服,那么下面让我们一起看一下程序完成的效果吧!

Java实现简易的文件的迁移器的更多相关文章

  1. Java有根儿:Class文件以及类加载器

    JVM 是Java的基石,Java从业者需要了解.然而相比JavaSE来讲,不了解JVM的一般来说也不会影响到工作,但是对于有调优需求或者系统架构师的岗位来说,JVM非常重要.JVM不是一个新的知识, ...

  2. Java基础之读文件——使用缓冲读取器读取文件(ReaderInputFromFile)

    控制台程序,本例读取Java基础之写文件部分(WriterOutputToFile)写入的Saying.txt. import java.io.*; import java.nio.file.*; i ...

  3. 五种方式让你在java中读取properties文件内容不再是难题

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  4. Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论

    Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的f ...

  5. Java虚拟机笔记 – JVM 自定义的类加载器的实现和使用2

    1.用户自定义的类加载器: 要创建用户自己的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的findClass(String name)方法即可,该方法根据参数指定类的名 ...

  6. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  7. Java 动态生成 PDF 文件

    每片文章前来首小诗:   今日夕阳伴薄雾,印着雪墙笑开颜.我心仿佛出窗前,浮在半腰望西天.  --泥沙砖瓦浆木匠 需求: 项目里面有需要java动态生成 PDF 文件,提供下载.今天我找了下有关了,系 ...

  8. Java类加载机制及自定义加载器

    转载:https://www.cnblogs.com/gdpuzxs/p/7044963.html Java类加载机制及自定义加载器 一:ClassLoader类加载器,主要的作用是将class文件加 ...

  9. HTML5文件上传器,纯脚本无插件的客户端文件上传器---Uploader 文件上传器类

    概述 客户端完全基于JavaScript的 浏览器文件上传器,不需要任何浏览器插件,但需要和jQuery框架协同工作,支持超大文件上传,其算法是将一个超大文件切片成N个数据块依次提交给服务 端处理,由 ...

随机推荐

  1. iOS 选择排序

    简单选择排序的基本思想:(从小到大) 第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换: 第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换: 以此类 ...

  2. Conference-Web Search and Data Mining

    Conference WSDM(Web Search and Data Mining)The ACM WSDM Conference Series 不像KDD.WWW或者SIGIR,WSDM因为从最开 ...

  3. iOS开发基础之设置状态栏和二维码的unspported type found 问题

    最近遇到设置状态栏和二维码AVCaptureMetadataOutput setMetadataObjectTypes: unspported type found的错误问题,所以我在这里进行总结一下 ...

  4. JVM性能参数调优实践,不会执行Full GC,网站无停滞

    原文来自:http://bbs.csdn.net/topics/310110257 本文只做整理记录,供个人学习. 1 JVM参数调优是个很头痛的问题,设置的不好,JVM不断执行Full GC,导致整 ...

  5. 计算机网络之万维网WWW

    万维网 WWW (World Wide Web)并非某种特殊的计算机网络,而是一个大规模的.联机式的信息储藏所. 万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰 ...

  6. Mac 下 查看 使用某端口的进程和关闭该进程的命令

    查看使用某端口的进程 最简单的命令是: lsof -i :端口号 如果要使用管理员权限那么就是: sudo lsof -i :端口号 所以查看 使用某端口号3000的进程可以使用: lsof -i : ...

  7. SQL Server 扩展事件(Extented Events)从入门到进阶(2)——在GUI中创建基础扩展事件

    本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟 ...

  8. android 图片网络下载github开源框架之Universal-Image-Loader

    最近在做妙趣剪纸项目,剪纸应用项目链接.发扬传统文化,大家多多关注. 需要自己搭建服务器,我用的是新浪sae,简直秒杀京东云几条街,把图片放在网上下载,但是图片经常下载要遇到很多问题,包括oom等.所 ...

  9. [Pelican]Pelican入门(一)

    听说这个静态博客很好用,最近又在协助"蟒周刊"翻译,于是先学习下基本的用法 office site You can startup for here. 安装环境 我的os是win7 ...

  10. Java并发框架——AQS之原子性如何保证?

    在研究AQS框架时,会发现这个类很多地方都使用了CAS操作,在并发实现中CAS操作必须具备原子性,而且是硬件级别的原子性,java被隔离在硬件之上,明显力不从心,这时为了能直接操作操作系统层面,肯定要 ...