ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一 , FileChanle

2022-08-16 20:02:30  阅读:147  来源: 互联网

标签:IOException writeFileChannel RandomAccessFile readFileChannel FileChanle read cl


package nio;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * @author DELL
 */
public class TestChannel {
    public static void main(String[] args) throws IOException {
//        read();
//        write();
//        transferFrom();
        transferTo();
    }

    /**
     * 读取
     * @throws IOException
     */
    public static void read() throws IOException {
        RandomAccessFile randomAccessFile = new RandomAccessFile("D:\\Maven-Item\\basic\\src\\a.txt", "rw");
        FileChannel channel = randomAccessFile.getChannel();
        ByteBuffer byteBuffer = ByteBuffer.allocate(2);
        int read = channel.read(byteBuffer);
        while (read!=-1){
            byteBuffer.flip();
            while (byteBuffer.hasRemaining()){
                System.out.print((char)byteBuffer.get());
            }
            byteBuffer.clear();
            read = channel.read(byteBuffer);
        }

        System.out.println();
        channel.close();
        randomAccessFile.close();
    }

    /**
     * 写入
     * @throws IOException
     */
    public static void write() throws IOException{

        RandomAccessFile readFile = new RandomAccessFile("D:\\Maven-Item\\basic\\src\\素书.txt", "rw");
        RandomAccessFile writeFile = new RandomAccessFile("D:\\Maven-Item\\basic\\src\\b.txt", "rw");

        FileChannel readFileChannel = readFile.getChannel();
        FileChannel writeFileChannel = writeFile.getChannel();

        ByteBuffer buffer = ByteBuffer.allocate(1);

        int read = readFileChannel.read(buffer);

        while (read!=-1){
            buffer.flip();
            while (buffer.hasRemaining()){
                writeFileChannel.write(buffer);
            }
            buffer.clear();
            read = readFileChannel.read(buffer);
        }

        readFileChannel.close();
        writeFileChannel.close();

    }

    /**
     * 通道之间传输数据
     */
    public static void transferTo () throws IOException{
        RandomAccessFile readFile = new RandomAccessFile("D:\\Maven-Item\\basic\\src\\素书.txt", "rw");
        RandomAccessFile writeFile = new RandomAccessFile("D:\\Maven-Item\\basic\\src\\b.txt", "rw");

        FileChannel readFileChannel = readFile.getChannel();
        FileChannel writeFileChannel = writeFile.getChannel();

        readFileChannel.transferTo(0,readFileChannel.size(),writeFileChannel);

        readFileChannel.close();
        writeFileChannel.close();
    }

    /**
     * 通道之间传输数据
     */
    public static void transferFrom () throws IOException{
        RandomAccessFile readFile = new RandomAccessFile("D:\\Maven-Item\\basic\\src\\素书.txt", "rw");
        RandomAccessFile writeFile = new RandomAccessFile("D:\\Maven-Item\\basic\\src\\b.txt", "rw");

        FileChannel readFileChannel = readFile.getChannel();
        FileChannel writeFileChannel = writeFile.getChannel();

        writeFileChannel.transferFrom(readFileChannel,0,readFileChannel.size());

        readFileChannel.close();
        writeFileChannel.close();
    }

}

 

标签:IOException,writeFileChannel,RandomAccessFile,readFileChannel,FileChanle,read,cl
来源: https://www.cnblogs.com/500m/p/16592778.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有