IO流--粘贴复制

来源:互联网 发布:淘宝office激活原理 编辑:程序博客网 时间:2024/06/09 23:02

                                                      I O 流 


                   ok,大家好!今天很开心分享一下我最近学习的IO流,只是层面很浅显,有错的地方请多多指教。            
               很显而易见,我设置了一个窗口,名字叫“大泽神器”,接下来他的功能就是要将一个文件成功并快速的复制             到任意的地方。
                setTitle("大泽神器");
setSize(400, 160);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(3);
setLayout(new FlowLayout(1, 0, 20));
JTextField copy_text = new JTextField(18);
JButton copy_button = new JButton("复制");
copy_button.setPreferredSize(new Dimension(60, 20));
JTextField paste_text = new JTextField(18);
JButton paste_button = new JButton("粘贴");
paste_button.setPreferredSize(new Dimension(60, 20));
add(copy_text);
add(copy_button);
add(paste_text);
add(paste_button);
setVisible(true);//可见


接下来就是对两个功能键进行了监听:               
                 copy_button.addActionListener(new ActionListener() {//粘贴监听
public void actionPerformed(ActionEvent e) {
flag = true;}});
paste_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {//复制监听
try {  if (flag)
copy_paste(copy_text.getText(), paste_text.getText());
} catch (Exception e1) {
// TODO: handle exception
e1.printStackTrace();
}
flag = true;}});
       好的,重点要来了!
我创建两个对象,分别为FileInputStream(输入流),FileOutputStream(输出流)。
经过多次验证,这种方法速度很快。。。。。。


private void copy_paste(String src_address, String pre_address) throws Exception {
                    // 构造文件输入流对象
FileInputStream fis = new FileInputStream(src_address);
  // 构造文件输出流对象
FileOutputStream fos = new FileOutputStream(pre_address, true);                       // true是追加,,默认为false}


接下来我用到了数组,来读取文件的字节,并实行复制,向下面的我设置的就是每2048个有效字节来读取,正规的都是些1024的倍数,显得专业。哈哈;
     
byte[] by = new byte[2048];// 里面写的1024的倍数


可能会有人疑问到,是不是里面写的字节数越大读取的熟读就会越快啊,这是误区,这个要根据你的文件大小来确定,不信你可以试试哦。(下面的不建议写的)


 // byte[] by = new byte[fis.available()];// fis.available读有效字节数


              // 开始读写操作
int i = fis.read(by);
// 循环读写
while (i != -1) {
fos.write(by, 0, i);
i = fis.read(by);
}
读写完记得关闭:
               // 关闭流
fis.close();
fos.close();
主函数成功调用:
            public static void main(String[] args) {
// System.out.println(new Date());
new FileRWTest().UI();}


也可以实现计时,来看看你的程序工作效率。在读取前设置一个时间,读取后在设置个时间。然后来个差值就ok了。
1 0
原创粉丝点击