Java实现简易的文件的迁移器
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实现简易的文件的迁移器的更多相关文章
- Java有根儿:Class文件以及类加载器
JVM 是Java的基石,Java从业者需要了解.然而相比JavaSE来讲,不了解JVM的一般来说也不会影响到工作,但是对于有调优需求或者系统架构师的岗位来说,JVM非常重要.JVM不是一个新的知识, ...
- Java基础之读文件——使用缓冲读取器读取文件(ReaderInputFromFile)
控制台程序,本例读取Java基础之写文件部分(WriterOutputToFile)写入的Saying.txt. import java.io.*; import java.nio.file.*; i ...
- 五种方式让你在java中读取properties文件内容不再是难题
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
- Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论
Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的f ...
- Java虚拟机笔记 – JVM 自定义的类加载器的实现和使用2
1.用户自定义的类加载器: 要创建用户自己的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的findClass(String name)方法即可,该方法根据参数指定类的名 ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Java 动态生成 PDF 文件
每片文章前来首小诗: 今日夕阳伴薄雾,印着雪墙笑开颜.我心仿佛出窗前,浮在半腰望西天. --泥沙砖瓦浆木匠 需求: 项目里面有需要java动态生成 PDF 文件,提供下载.今天我找了下有关了,系 ...
- Java类加载机制及自定义加载器
转载:https://www.cnblogs.com/gdpuzxs/p/7044963.html Java类加载机制及自定义加载器 一:ClassLoader类加载器,主要的作用是将class文件加 ...
- HTML5文件上传器,纯脚本无插件的客户端文件上传器---Uploader 文件上传器类
概述 客户端完全基于JavaScript的 浏览器文件上传器,不需要任何浏览器插件,但需要和jQuery框架协同工作,支持超大文件上传,其算法是将一个超大文件切片成N个数据块依次提交给服务 端处理,由 ...
随机推荐
- C# get 、set、索引器
get 与 set C#类的属性有公有属性(public)和私有属性(private).如果直接将一个属性声明为public,则该类的任意实例可以随意获取或修改该属性的值,很不安全..NET Fram ...
- Page Object设计模式实践
Page Object模式是使用Selenium的广大同行最为公认的一种设计模式.在设计测试时,把元素和方法按照页面抽象出来,分离成一定的对象,然后再进行组织. Page Object模式,创建一个对 ...
- 关于go语言的通道
1.记一次gorountine导致的泄漏 在项目中使用https://github.com/deckarep/golang-set这个三方包造成了gorountine泄漏.先来看一下这个包的迭代器设置 ...
- PHP 实例 AJAX 与 XML
在 PHP 中,AJAX 可用来与 XML 文件进行交互式通信,具体的通信过程,请参考本文内容! AJAX XML 实例 下面的实例将演示网页如何通过 AJAX 从 XML 文件读取信息: 实例 ...
- 有一个排序二叉树,数据类型是int型,如何找出中间大的元素。
void tree2Dll(TNode* root, TNode*& tail) { if (!root) { return; } if (root->left) { tree2Dll( ...
- Java经典设计模式之七大结构型模式(附实例和详解)
博主在大三的时候有上过设计模式这一门课,但是当时很多都基本没有听懂,重点是也没有细听,因为觉得没什么卵用,硬是要搞那么复杂干嘛.因此设计模式建议工作半年以上的猿友阅读起来才会理解的比较深刻.当然,你没 ...
- 计算机网络之IP协议族
网际协议IP 与IP协议配套使用的还有三个协议: 地址解析协议 ARP (Address Resolution Protocol) 网际控制报文协议 ICMP (Internet Control ...
- lldb po [$view recursiveDescription]; 打印视图层次
备忘: lldb 打印视图层次: 对某一个view,比如operationBgView po [operationBgView recursiveDescription];
- Swift基础之音乐播放随机变换着色板
今天的内容比较简单,我也就不做详细的文字介绍了,直接上代码,希望对大家有所帮助 var audioPlayer = AVAudioPlayer() //梯度配色 let gradientL ...
- 长度为N的数组乱序存放着0带N-1.现在只能进行0与其他数的swap操作,请设计并实现排序,必须通过交换实现排序。
void sort(int* arr, int len) { if (!arr) { return; } for (int i = 1; i < len; ++i) { while (arr[0 ...