使用字节流复制文件

复制代码
 1 public static void main(String[] args) throws IOException {
 2         FileInputStream fis = new FileInputStream("c:\\1.jpg");
 3         FileOutputStream fos = new FileOutputStream("d:\\1.jpg");
 4         int len = 0;
 5         byte[] bytes = new byte[1024];
 6         while ((len = fis.read(bytes)) != -1) {
 7             fos.write(Arrays.copyOf(bytes,len));
 8         }
 9         fos.close();
10         fis.close();
11     }
复制代码

# 注:第7行代码的作用是防止在拷贝的最后一次将bytes数组的1024字节全部拷贝导致复制后的文件略大于源文件。


复制代码
package stream;

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

/**
 * @Classname copy_img
 * @Description TODO
 * @Date 2020/9/30 9:07
 * @Created by Administrator
 */
public class copy_img {
    public static void main(String[] args) {
        copy_file("d://a/8.jpg", "d://a/aa/8.jpg");
    }

    /**
     * 文件复制方法
     * @param sourcepath
     * @param targetpath
     */
    public static void copy_file(String sourcepath, String targetpath) {
        System.out.println("文件开始复制...");
        Long start_time=System.currentTimeMillis();
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream(sourcepath);
            fos = new FileOutputStream(targetpath);
            byte[] bytes_in = new byte[1024];
            int len_in = 0;
            while ((len_in = fis.read(bytes_in)) != -1) {
                fos.write(bytes_in, 0, len_in);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                fos.close();
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            System.out.println("消耗"+(System.currentTimeMillis()-start_time)+"毫秒,文件复制完毕...");
        }


    }
}
复制代码

 

posted @   佛祖让我来巡山  阅读(223)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

佛祖让我来巡山博客站 - 创建于 2018-08-15

开发工程师个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

Bootstrap中文网

点击右上角即可分享
微信分享提示