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.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.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.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() ;
}
}
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基础知识强化之IO流笔记76:NIO之 Channel(通道)之间的数据传输