多线程复制文件、多线程读取并打印

第一部分 - 多线程复制文件

这个版本是因为看错了要求,把任务要求看成了“多线程复制一个文件”,写完才发现不对,但是代码还是没问题的,把它放上来。

线程类

package com.xxm.advanced_camp.greatmission3_readbigfiles;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * 用于多线程复制文件的线程类
 * 用途:复制文件到另一个位置,
 * <p>
 * fileIn   输入文件
 * <p>
 * fileOut  输出文件
 * <p>
 * posStart    该线程复制的起始位置
 * <p>
 * posEnd   该线程复制的终点位置
 */
class CopyThread extends Thread {
   
    File fileIn = null;
    File fileOut = null;
    long posStart = 0;
    long posEnd = 0;


    //定义带参数的构造方法
    public CopyThread(File fileIn, File fileOut, long posStart, long posEnd) {
   
        this.fileIn = fileIn;
        this.fileOut = fileOut;
        this.posStart = posStart;
        this.posEnd = posEnd;
    }

    //覆写 run 方法
    @Override
    public void run() {
   
        //1.初始化读写的 RandomAccessFile 对象
        RandomAccessFile rafWrite = null;
        RandomAccessFile rafRead = null;

        //2.给对象复制,传入读取、写入的位置
        try {
   
            rafRead = new RandomAccessFile(fileIn, "r");
            rafWrite = new RandomAccessFile(fileOut, "rw");
        } catch (FileNotFoundException e) {
   
            e.printStackTrace();
        }

        //3.定义用来存储读写数据的字节数组
        byte[] b = new byte[1024 * 3];

        //临时变量 len
        int len = 0;

        //4.利用 RandomAccessFile 类的 seek 方法获取线程复制文件的起始点
        try {
   
            rafWrite.seek(posStart);
            rafRead.seek(posStart);

            //5.死循环,len 不等于-1 时,代表文件未到达末尾,继续执行;等于-1时退出。
            while ((len = rafRead.read(b)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值