码迷,mamicode.com
首页 > 编程语言 > 详细

java第四次作业

时间:2016-04-08 18:18:05      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

此程序优化读取大的文件(测试文件为14M),写成两个静态方法,方便调用,代码如下:

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {
    public static void testFile(File filein, File fileout) throws IOException {
        // 判断文件是否存在
        if (!filein.exists()) {
            System.out.println(filein.getName() + " 不存在 ");
            throw new IOException();
        }
        // 如果文件不存在,创建
        if (!fileout.exists()) {
            fileout.createNewFile();
            throw new IOException();
        }
        FileInputStream in = new FileInputStream(filein);
        FileOutputStream out = new FileOutputStream(fileout);
        int b;

        // copy
        while ((b = in.read()) != -1) {
            out.write(b);
        }
        in.close();
        out.close();
    }

    

    public static void testFileQuick1(File filein, File fileout) throws IOException {
        // 判断文件是否存在
        if (!filein.exists()) {
            System.out.println(filein.getName() + " 不存在 ");
            throw new IOException();
        }
        // 如果文件不存在,创建
        if (!fileout.exists()) {
            fileout.createNewFile();
            throw new IOException();
        }
        FileInputStream in = new FileInputStream(filein);
        FileOutputStream out = new FileOutputStream(fileout);
        byte[] buf = new byte[20 * 1024];
        int bytes = 0;
        // copy
        while ((bytes = in.read(buf, 0, buf.length)) != -1) {
            out.write(buf, 0, bytes);
        }
        in.close();
        out.close();

    }

    public static void main(String[] args) {
        try {
            long start = System.currentTimeMillis();
            Test.testFile(new File("C:\\Users\\cumin\\Desktop\\1.mp3"),
                    new File("C:\\Users\\cumin\\Desktop\\6.mp3 "));
            long end = System.currentTimeMillis();
            System.out.println(end - start);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

通过静态方法testFile按字节读取后复制需要:

技术分享

Test.testFileQuick1(new File("C:\\Users\\cumin\\Desktop\\1.mp3"),
                    new File("C:\\Users\\cumin\\Desktop\\6.mp3 "));
            long end = System.currentTimeMillis();
            System.out.println(end - start);

换成静态方法testFileQuick1后 :

技术分享

 

PS:读取主要通过 read(byte[] b, int off, int len) 提升速度。

  写主要通过 write(byte[] b, int off, int len) 提升速度。

复制速度大幅提升~~ 而且文件不存在会自动创建。

java第四次作业

标签:

原文地址:http://www.cnblogs.com/lcumin/p/5369008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!