基于对文件输入输出流的一些简单应用,编写了一个文件复制程序(提醒:单核CPU慎用,占用CPU太多) 以下是源代码:
1.界面
package file.iostream;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* 文件的复制登陆界面
*
* @author lenovo
*
*/
public class FileCopyUI extends JFrame{
public static void main(String args[]) {
// 创建FileCopy对象
FileCopyUI fc = new FileCopyUI();
fc.showUI();
}
/**
* 初始化窗口
*/
public void showUI(){
//设置标题
this.setTitle("文件复制器 v1.0");
//设置窗体大小
this.setSize(400,250);
//创建流式布局器
java.awt.FlowLayout fl=new java.awt.FlowLayout();
this.setLayout(fl);
//创建一个面板对象
JPanel jp=new JPanel();
//创建一个尺寸对象
java.awt.Dimension di=new java.awt.Dimension(392,96);
//设置面板的大小
jp.setPreferredSize(di);
//创建并给面板加上流式布局器
java.awt.FlowLayout fl1=new java.awt.FlowLayout();
jp.setLayout(fl1);
//创建两个标签,创建两个文本框,一个按钮
JLabel jl1=new JLabel(" 源文件路径:");
final JTextField jt1=new JTextField(20);
JLabel jl2=new JLabel("复制后文件路径:");
final JTextField jt2=new JTextField(20);
JButton jb=new JButton("开始复制");
//将标签,文本行,按钮加到面板上去
jp.add(jl1);
jp.add(jt1);
jp.add(jl2);
jp.add(jt2);
jp.add(jb);
//把面板加到窗体
this.add(jp);
//创建一个多行文本框
final JTextArea jta=new JTextArea(5,30);
// 创建一个滚动条
JScrollPane jsp = new JScrollPane(jta);
this.add(jta);
this.add(jsp);
//窗体大小不可改变
this.setResizable(false);
//关闭时退出
this.setDefaultCloseOperation(3);
//将窗体显示出来
this.setVisible(true);
//给开始复制按钮安装动作监听器
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String start="正在复制……";
//将start写入多行文本框中
jta.append(start);
//得到源文件路径
String str1=jt1.getText();
//得到复制后文件路径
String str2=jt2.getText();
//创建一个FileCopy对象
FileCopy fc=new FileCopy();
//调用复制函数
fc.copyflie(str1, str2);
String end="复制成功!!!";
//将start写入多行文本框中
jta.append("\n"+end);
}
});
}
}
2.文件复制方法
package file.iostream;
/**
* 文件复制方法类
*
* @author lenovo
*
*/
public class FileCopy {
/**
* 文件复制的方法
*
* @param srcpath
* :原来的文件文件路径
* @param copypath
* :复制后的文件路径
* @return:是否复制成功
*/
public void copyflie(String srcpath, String copypath) {
try {
// 根据给定的路径创建输入流对象
java.io.FileInputStream is = new java.io.FileInputStream(srcpath);
// 创建一个输出流对象
java.io.FileOutputStream os = new java.io.FileOutputStream(copypath);
// 读取流的字节
int s = is.read();
// 读取字节知道读取完,并将读取的字节装入队列
while (s != -1) {
// 将读取的字节强制转化为字节类型
byte b = (byte) (s);
// 取出字节
os.write(b);
// 读取字节
s = is.read();
}
// 强制输出
os.flush();
// 关闭流
is.close();
os.close();
} catch (Exception ef) {
ef.printStackTrace();
}
}
}
以下是界面效果: