Java入门19

d16

IO中的其他流

RandomAccessFile

1.Seek()
      绝对的量
 2.skip()
       相对值。
 3.
  • 随机访问文件,自身具备读写方法
  • 通过SkipBytes(int),seek(int x)来达到随机访问

管道流

PipedInputStream  PipedOutputStream

输入输出可以直接进行链接,通过结合线程实用

=========================================================================

多线程拷贝

package D16;

import java.lang.*;
import java.io.File;
import java.io.RandomAccessFile;

public class MulThreadCopyFile {
    static int i = 0;
    static int block = 0;

    public static void main(String[] args) {
        //原文件
        File srcFile = new File("/Users/ifeng/Desktop/iotest/2012年建模论文集的副本");
        RandomAccessFile srcRaf = new RandomAccessFile(srcFile,"r");
        //文件长度
        int srcLength = (int)srcFile.length();

        //目标文件
        File destFile = new File("/Users/ifeng/Desktop/iotest/11111/");
        final RandomAccessFile raf = new RandomAccessFile(destFile,"rw");
        raf.setLength(srcLength);

        //实用线程数
        int count = 3;

        //计算每个线程复制的文件块大小
        if(srcLength % count == 0){
            block = srcLength / count;
        }
        else {
            block = srcLength / count + 1;
        }
        //开启count个线程
        for(i = 0; i < count ; i ++){
            Thread t = new Thread() {
                public void run(){
                    int start = i * block;
                    int end = 0;
                    //是否是最后一个线程
                    if(i != (count-1)){
                        end = (i + 1) * block -1;

                    }
                    else {
                        end = srcLength - 1;
                    }
                    //定位文件指针
                    raf.seek(start);
                    //
                    int bufSize = end - start + 1 ;
                    byte[] buf = new byte[bufSize];
                    srcRaf.read(buf);
                    destRaf.write(buf);
                }
            };
            t.start();
        }
        Thread.sleep(1000);
        System.out.println("over");
    }
}

串行化(序列化)

将java对象转化成某种格式(JVM定义的)字节数组

反串行化

将字节数组恢复成java对象

java.io.Sreializable

1.可串行化接口
2.标示性接口
3.JVM

DeepCopy

深度复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oifengo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值