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() {@Overridepublic voidactionPerformed(ActionEvent e) {//TODO Auto-generated method stubdialog = 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(){@Overridepublic voidactionPerformed(ActionEvent e) {//TODO Auto-generated method stubString 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之简易的文件加密器的实现

    文件加密器的实现项目: 实现简单的文件加密/解密,要求界面中选择文字(使用JFileChooser),并指定加密算子(0-255之间的整数),然后完成对任意文件的加密和解密,加密过程要求蚕蛹两种不同的 ...

  2. 使用java创建一个简易的视屏播放器

    最近有个多媒体的作业,要求使用visualC++和opencv编写一个简易的视屏播放器,对于C/C++残疾者而言是不可能的,于是萌生了用java编写的想法.具体经验分享一下. 目标:制作简易视屏播放器 ...

  3. java 生成media_使用java创建一个简易的视屏播放器

    最近有个多媒体的作业,要求使用visualC++和opencv编写一个简易的视屏播放器,对于C/C++残疾者而言是不可能的,于是萌生了用java编写的想法.具体经验分享一下. 目标:制作简易视屏播放器 ...

  4. 简易的本地音乐播放器 适用于Java初学者

    简易的本地音乐播放器 适用于Java初学者 我知道肯定会有人说都1202年了怎么还有人在用AudioClip,没有别的原因,因为我也刚学Java,刚好看到一个这样的教程就刚好写了一个这样的播放器. 我 ...

  5. 【Java】简易视频播放器

    [效果图] [功能] 1.当窗口获取焦点后,按空格暂停/播放 2.原速播放键.暂停/播放键.倍速播放键(最高3倍速,每次递增0.5) 3.进度条可点击选择播放位置 4.时间显示.播放速度显示 [项目与 ...

  6. Java class类文件和类加载器详解以及代码优化

    JVM就是Java虚拟机,它是Java程序运行的载体. 计算机只识别0和1.Java是⾼级语⾔.⾼级语⾔编写的程序要想被计算机执⾏,需要变成⼆进制形式的本地机器码.能直接变成机器码的语义是C++,它的 ...

  7. 【Python黑帽子】——简易的ZIP文件密码破解器

    作者名:Demo不是emo  主页面链接:主页传送门 创作初心:一切为了她 座右铭:不要让时代的悲哀成为你的悲哀 专研方向:网络安全,数据结构 每日emo:突然感觉也没什么好emo的了,仿佛时间已经将 ...

  8. Java swing简易浏览器(其二)前进后退与收藏夹实现

    [Java swing简易浏览器(其一)页面显示,超链接跳转与手动输入URL跳转] [Java swing简易浏览器(其二)前进后退与收藏夹实现] [java swing 简易浏览器(其三)下载器,智 ...

  9. java import自定义类_自定义类加载器-从.class和.jar中读取

    一. 类加载器 JVM中的类加载器:在jvm中,存在两种类加载器, a) Boostrap ClassLoader:这个是由c++实现的,所以在方法区并没有Class对象的实例存在.用于加载JAVA_ ...

最新文章

  1. pytorch tensor 筛选排除
  2. python网格搜索核函数_机器学习笔记——模型调参利器 GridSearchCV(网格搜索)参数的说明...
  3. Java程序员从笨鸟到菜鸟之(二十九)javascript对象的创建和继承实现
  4. 如何搭建和使用 Xcode 开发环境
  5. python的简介和入门
  6. vue动态跟新layui的select_vue+layui实现select动态加载后台数据的例子
  7. java入门就是死敲代码吗_JAVA入门第二季综合练习(直接思考敲的代码,面向过程,不好)...
  8. java 排列3_java中的三大排序算法
  9. DCMTK:Receiving Images from PACS using DCMSCU
  10. ofo 99 元押金变 97 元;华为“抛弃”美国;App Store 涉嫌垄断 | 极客头条
  11. android 7 apk 安装程序,Android安装apk文件并适配Android 7.0详解
  12. HCL之SSH的配置与应用
  13. 利用Cramer法则求具有唯一解的方程组的解
  14. HyperX Savage系列 DDR3 2400 16GB (8GBx2)玩虚拟化部署
  15. atapi.sys 蓝屏 难度系数☆☆☆ ...
  16. 普及一下行业尖端知识——腾讯自研分布式数据库TBase
  17. 算法导论 9.1-1 “给出算法,在给定的比较次数(n+向上取整(lgn)-2)内,一定能找出第二小的元素。提示:也找出最小元素。”...
  18. 距离度量与相似度度量
  19. 队列的顺序、链式表示与实现
  20. [Vue warn]: Failed to mount component: template or render function not defined.解决方案

热门文章

  1. 实战:Windows Server 2008 使用WSUS实现内网计算机系统更新
  2. 人生只有七次机会,你抓住了几次?
  3. Beetle在TCP通讯中使用协议分析器和自定义协议对象
  4. FineReport连接mysql8.0.16
  5. 误删mysql数据库密码后,如何恢复密码
  6. android 360状态栏显示,如何从Android应用程序显示360全景(How to display a 360 panorama from android application)...
  7. RabbitMQ工作队列
  8. Protobuf序列化的原理-protobuf的基本应用
  9. 执行SQL-MapperMethod.execute()
  10. MyBatis 源码解读-databaseIdProviderElement()