Java新IO_通道(Channel)代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java新IO_通道(Channel)代码相关的知识,希望对你有一定的参考价值。

//******

 

import java.nio.ByteBuffer ;
import java.nio.channels.FileChannel ;
import java.io.File ;
import java.io.FileOutputStream ;
public class FileChannelDemo01{
    public static void main(String args[]) throws Exception{
        String info[] = {"MLDN","MLDNJAVA","www.mldn.cn","www.mldnjava.cn","李兴华","lixinghua"} ;
        File file = new File("." + File.separator + "out.txt") ;
        FileOutputStream output = null ;
        output = new FileOutputStream(file) ;
        FileChannel fout = null ;    // 声明FileChannel对象
        fout = output.getChannel() ;    // 得到输出的通道
        ByteBuffer buf = ByteBuffer.allocate(1024) ;
        for(int i=0;i<info.length;i++){
            buf.put(info[i].getBytes()) ;    // 字符串变为字节数组放进缓冲区之中
        }
        buf.flip() ;
        fout.write(buf) ;    // 输出缓冲区的内容
        fout.close() ;
        output.close() ;
    }
}
//*****

 

 

import java.nio.ByteBuffer ;
import java.nio.channels.FileChannel ;
import java.io.File ;
import java.io.FileOutputStream ;
import java.io.FileInputStream ;
public class FileChannelDemo02{
    public static void main(String args[]) throws Exception{
        File file1 = new File("." + File.separator + "note.txt") ;
        File file2 = new File("." + File.separator + "outnote.txt") ;
        FileInputStream input = null ;
        FileOutputStream output = null ;
        output = new FileOutputStream(file2) ;
        input = new FileInputStream(file1) ;
        FileChannel fout = null ;    // 声明FileChannel对象
        FileChannel fin = null ;    // 定义输入的通道
        fout = output.getChannel() ;    // 得到输出的通道
        fin = input.getChannel() ;    // 得到输入的通道
        ByteBuffer buf = ByteBuffer.allocate(1024) ;
        
        int temp = 0 ;

        while((temp=fin.read(buf))!=-1){
            buf.flip() ;
            fout.write(buf) ;
            buf.clear() ;    // 清空缓冲区,所有的状态变量的位置恢复到原点
        }
        fin.close() ;
        fout.close() ;
        input.close() ;
        output.close() ;
    }
}

//*****

import java.nio.ByteBuffer ;
import java.nio.MappedByteBuffer ;
import java.nio.channels.FileChannel ;
import java.io.File ;
import java.io.FileOutputStream ;
import java.io.FileInputStream ;
public class FileChannelDemo03{
    public static void main(String args[]) throws Exception{
        File file = new File("." + File.separator + "mldn.txt") ;  
        FileInputStream input = null ;
        input = new FileInputStream(file) ;
        FileChannel fin = null ;    // 定义输入的通道
        fin = input.getChannel() ;    // 得到输入的通道
        MappedByteBuffer mbb = null ;
        mbb = fin.map(FileChannel.MapMode.READ_ONLY,0,file.length()) ;
        byte data[] = new byte[(int)file.length()] ;    // 开辟空间接收内容
        int foot = 0 ;
        while(mbb.hasRemaining()){
            data[foot++] = mbb.get() ;    // 读取数据
        }
        System.out.println(new String(data)) ;    // 输出内容
        fin.close() ;
        input.close() ;
    }
}
 //****

import java.nio.ByteBuffer ;
import java.nio.channels.FileChannel ;
import java.io.File ;
import java.io.FileOutputStream ;
public class FileChannelDemo01{
    public static void main(String args[]) throws Exception{
        String info[] = {"MLDN","MLDNJAVA","www.mldn.cn","www.mldnjava.cn","李兴华","lixinghua"} ;
        File file = new File("." + File.separator + "out.txt") ;
        FileOutputStream output = null ;
        output = new FileOutputStream(file) ;
        FileChannel fout = null ;    // 声明FileChannel对象
        fout = output.getChannel() ;    // 得到输出的通道
        ByteBuffer buf = ByteBuffer.allocate(1024) ;
        for(int i=0;i<info.length;i++){
            buf.put(info[i].getBytes()) ;    // 字符串变为字节数组放进缓冲区之中
        }
        buf.flip() ;
        fout.write(buf) ;    // 输出缓冲区的内容
        fout.close() ;
        output.close() ;
    }
}
 

以上是关于Java新IO_通道(Channel)代码的主要内容,如果未能解决你的问题,请参考以下文章

go语言学习笔记 — 进阶 — 并发编程:通道(channel) —— 各种各样的通道

JAVA NIO学习记录1-buffer和channel

Java基础知识强化之IO流笔记76:NIO之 Channel(通道)之间的数据传输

Day386&387.Nio概述&Nio的Channel通道 -NIO

Java-NIO:通道(Channel)的原理与获取

通道(Channel)