问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

RandomAccessFile用多线程读取文件,然后在合并成一个文件存储。。。。怎么实现啊。。。

发布网友 发布时间:2022-04-09 05:51

我来回答

2个回答

热心网友 时间:2022-04-09 07:21

package com.example.PhoneSafe.test;
import java.io.*;
/**
 * Created with IntelliJ IDEA.
 * User: Administrator
 * Date: 13-8-7
 * Time: 上午10:58
 * To change this template use File | Settings | File Templates.
 */
public class RandomAccessFileTest {
    public static void main(String [] args){
        try{
            int fileSize; //描述文件大小
            int startPos; //文件开始写入位置
            Thread [] threads = new Thread[5]; //定义一个线程数组
            File file = new File("E:\\baby\\info.txt");  //需要复制的文件
            FileInputStream fis = new FileInputStream(file);   //装载到的文件
            fileSize = (int) file.length()/5+1; //获得单个线程写入文件的单元大小
            //采用for循环来实习多线程的启动
            for(int i=0;i<5;i++){
                startPos = i*fileSize;  //线程写入的起始位置
                threads[i] = new Thread(new DownloadFile(fis,new RandomAccessFile("E:\\baby\\info_copy.txt","rw"),startPos,fileSize));
                threads[i].start();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
class DownloadFile implements Runnable{
    private FileInputStream is;   //文件输入流
    private RandomAccessFile rAF;   //文件输出流
    private int startPos;
    private int fileUnitSize;
    private int length;
    public DownloadFile(FileInputStream is,RandomAccessFile rAF,int startPos,int fileUnitSize){
        this.is = is;
        this.rAF = rAF;
        this.startPos = startPos;
        this.fileUnitSize = fileUnitSize;
    }
    @Override
    public void run() {
        try{
            is.skip(startPos);
            rAF.seek(startPos);
            byte [] buffer = new byte[1024];
            int hasbyte = 0;
            while((hasbyte=is.read(buffer))!=-1){
                rAF.write(buffer,0,hasbyte);
                length +=hasbyte;
                if(length<fileUnitSize){
                   return;
                }
            }
        }catch(IOException e){
            e.printStackTrace();
        } finally{
            System.out.println("end");
            try{
                rAF.close();
            }catch(IOException e){
              e.printStackTrace();
            }
        }


    }

}

热心网友 时间:2022-04-09 08:39

Java的内8核和class文6件是基于kunicode的,这使Java程序具有良好的跨平台性,但也m带来了f一i些中2文3乱码问题的麻烦。原因主要有两方8面,Java和JSP文2件本身编译时产生的乱码问题和Java程序于t其他媒介8交互8产生的乱码问题。 这篇文5章讲很细: >>Java。JSP中2文2乱码问题解决心6得 -编程 - BlogJava -=>hキnq省处gkēècエ司Xkēègycエ司X追问哥们。。你 在 说 些 啥???
要复制。。。也要找 个 像点 的 啊。。。
有点专业精神 好 不。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中支黄金叶什么价 怎么在整个PPT中加入背景音乐,而不是在一张幻灯片中插入,我要的是从... 构造柱有哪些构造措施 中国风的女式花裤配什么鞋 留抵抵税额是什么意思 留抵税抵什么意思 ...里发现很多门店装修和华为一样的,但是官网查不到,这种店铺购买... 墙布贴了关窗多久 墙布贴了要关窗多久 墙布贴好要多久密闭多久 红外热释电传感器和处理芯片哪个品牌比较好? 想问下,这乐普小蓝点体温计测的准吗? 红外热释电传感器与tps334红外传感器哪个更好一些 地址为192.168.3.0 掩码为255.255.255.248 可划分的子网数是多少?每个子网中可用的主机数是多少? 红外额温计的价格高低的主要区别在哪里? .地址为192.168.3.0 掩码为255.255.255.248 可划分的子网数是多少?每个子网中可用的主机数是多少?写出每 给某个公司建网络,现有ip地址192.168.30.15&#47;29要求划分16个网络,每个网络有多少主 红外线传感器德国海蔓和石冢哪个好 海曼智慧消防门磁是免费用的吗 海曼智能家居厂家有生产哪些产品? 开学手抄报我要短的 急急急急急急急急急急急急!!! 手机拍照模糊怎么回事 手机拍照模糊解决方法 手机照相不清楚是怎么回事 java 读取大容量文件,内存溢出?怎么按几行读取,读取多次。 赣州市医疗保障局 龙南市医疗保险公家个人缴费比例是多少 江西省赣州市龙南县城镇职工医疗保险如何缴费? 苏泊尔破硅机sp9O3好用吗 全营养五全营养五谷调理机怎么使用? 精谛营养调理机绞豆浆怎么用 好神厨全能营养机怎么用 机动车辆登记证书上登记栏备注:此前已办理登记业务2次,其中:变更登记&#47;变更备案:2次,是什么意思? 变更对外贸易经营者备案登记表去哪变更 需要什么材料 对外贸易经营者备案登记表变更 报检企业备案登记更改申请表怎么双面打印 对外贸易备案登记表更改 如何在网上申请对外贸易经营者备案登记表变更 求好用的爽肤水 面部深层清洁补水护理 一天做多少次爱才算合适 面部啫喱水使用方法 做爱一天几次最好 人事管理包含哪些? 我16岁,男友20岁,我们一天做几次次合适? 什么是人事管理,主要包括哪些? 301128中签能赚多少 减脂运动,一天做几次合适,每次做多久? 祝亲爱的自己,生日快乐! 用英语怎么写? 人事管理具体做什么? 一天我们女人可以做几次性爱最好呢?求解 祝亲爱的自己生日快乐!用英文怎么写