package FileCopyThread;                         //自建的包,根据个人调整

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile; public class FileCopy {
public static void main(String[] args) { int start = (int)System.currentTimeMillis();
try {
RandomAccessFile raf = new RandomAccessFile(new File("E:/11.txt"), "r");
int fileLen = (int)raf.length();
int nums = 20;
int distance = (int)(fileLen/nums); new ThreadFileCopy(0, distance - 1).start();;
for(int i = 1; i <= nums - 2; i++){
new ThreadFileCopy(distance*i, distance*(i+1) - 1).start();
}
new ThreadFileCopy(distance*(nums-1), fileLen).start();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int end = (int)System.currentTimeMillis();
System.out.println("耗时:" + (end - start)); }
}
package FileCopyThread;                         //自建的包根据个人调整

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile; public class ThreadFileCopy extends Thread{
final String oldPath = "E:/11.txt";
final String newPath = "F:/22.txt"; RandomAccessFile oraf = null;
RandomAccessFile nraf = null; private int startPos = 0;
private int endPos = 0;
final int bufSize = 10240 * 5;
public ThreadFileCopy(){ } public ThreadFileCopy(int startPos, int endPos){
this.startPos = startPos;
this.endPos = endPos;
} @Override
public void run() { try {
oraf = new RandomAccessFile(new File(oldPath), "r");
nraf = new RandomAccessFile(new File(newPath), "rw"); oraf.seek(startPos);
nraf.seek(startPos); byte[] bytes = new byte[bufSize];
int len;
while(endPos - startPos > 0){
len = (int)((endPos - startPos) > bufSize ? bufSize :(endPos - startPos));
oraf.read(bytes, 0, len);
nraf.write(bytes, 0, len);
endPos -= len;
System.out.println(Thread.currentThread().getName()
+ "读取了" + len + "个字节");
} oraf.close();
nraf.close(); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally { }
}
}

IO 单个文件的多线程拷贝的更多相关文章

  1. IO流-文件夹的拷贝

    文件夹的拷贝操作 要求: 完成文件夹的拷贝,包括子目录的拷贝和所有文件的拷贝 分析: 首先,得在目标目录下创建一个与源文件夹名称相同的文件夹 遍历源文件夹中的所有文件对象,判断子文件是目录还是文件 如 ...

  2. python 多线程拷贝单个文件

    # -*- coding: utf-8 -*- # @author: Tele # @Time : 2019/04/04 下午 12:25 # 多线程方式拷贝单个文件 import threading ...

  3. IO流文件拷贝

    目录 IO流文件拷贝 前言 字节流(使用FileInputStream和FileOutputStream读取每一个字节...) 字节流(使用FileInputStream和FileOutputStre ...

  4. Java IO 流-- 文件拷贝

    IO流操作套路: 1.创建源: 2.选择流: 3.操作: 4.释放资源 上代码: package com.xzlf.io; import java.io.File; import java.io.Fi ...

  5. 打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源

    前一段时间国内的各大网盘百度云盘,金山快盘,360云盘,华为网盘为争夺用户上演空间容量博弈,网盘商们还固执地以为中国的网民都不懂网络技术,可以像某公司那样用一些数字的手段来忽悠用户,参与到网盘商的数字 ...

  6. kotlin单个文件及文件夹复制例子

    最近学习kotlin,把java中的单个文件及包含文件夹的文件 复制操作改写为kotlin的代码,主要熟悉kotlin文件操作以及递归调用操作方法 演示代码如下: package com.exam.f ...

  7. Linux文件和零拷贝

    本文转载自文件和零拷贝 文件概述 文件描述符 文件描述符:在Linux中,所有的文件都是通过文件描述符引用.fd是一个非负整数.按照惯例,标准输入的fd是0,标准输出的fd是1,标准错误的fd是2.分 ...

  8. Zip文件压缩(加密||非加密||压缩指定目录||压缩目录下的单个文件||根据路径压缩||根据流压缩)

    1.写入Excel,并加密压缩.不保存文件 String dcxh = String.format("%03d", keyValue); String folderFileName ...

  9. Python编码/文件读取/多线程

    Python编码/文件读取/多线程 个人笔记~~记录才有成长   编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...

随机推荐

  1. leetcode算法笔记:二叉树,动态规划和回溯法

    在二叉树中增加一行 题目描述 给定一个二叉树,根节点为第1层,深度为 1.在其第 d 层追加一行值为 v 的节点. 添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N, ...

  2. python 做一个简单的登录接口

    # -*- conding :utf-8 -*-# File Name: homewoe# Create Date: 2019/11/20 / 9:15# Change Activity: 2019/ ...

  3. centos7 设置连接无线wifi

    安装系统后,首先要联网. 1.首先使用网线连接,之后尝试ping www.baidu.com我的是自动通的 2.需要查看网卡型号,先安装工具 yum -y install pciutils* 3.查看 ...

  4. 🔥《手把手教你》系列基础篇之3-python+ selenium-驱动浏览器和元素定位大法(详细)

    1. 简介 上一篇中,只是简单地一带而过的说了一些驱动浏览器,这一篇继续说说驱动浏览器,然后再说一说元素定位的方法. 完成环境的安装并测试之后,我们对Selenium有了一定的了解了,接下来我们继续驱 ...

  5. PostGIS 结合Openlayers以及Geoserver实现最短路径分析(一)

    环境: Win10 ArcMap10.4(用于数据处理) postgresql9.4 postgis2.2.3 pgRouting2.3(postgresql插件) ##附上本文配套素材下载地址:ht ...

  6. JSAPI 基于arcgis_js_api3.3的部署

    JSAPI,即ArcGIS API For JavaScript,是arcgis基于JavaScript环境下的开发包.包含Dojo框架. ||Dojo结构如下:=================== ...

  7. 基于 HTML5 WebGL 和 VR 技术的 3D 机房数据中心可视化

    前言 在 3D 机房数据中心可视化应用中,随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的 ...

  8. &#128293;《手把手教你》系列练习篇之1-python+ selenium自动化测试(详细教程)

    1.简介 相信各位小伙伴或者同学们通过前面已经介绍了的Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是 一只脚已经迈入这个门 ...

  9. 2019-9-26:渗透测试,基础学习,nmap扫描kali虚拟机服务

    初识Nmap 1, 首先确定kali的ip地址,输入命令ifconfig 2, 开启所需要扫描的服务, 开启ssh:service ssh start, 确认ssh服务是否开启service ssh ...

  10. Power Query系列 - 排序Ranking

    Power Query系列 - 排序Ranking 难度: ★★☆☆☆(1星) 适用范围: ★★★☆☆(3星) 概况: 在数据分析中,我们常常需要对数据进行排序,同时我们想知道某个项目或者产品的排名, ...