1. Description
Channel est un objet à travers lequel les données peuvent être lues et écrites. Il peut être visualisé comme un flux dans IO. Mais par rapport aux flux, il présente quelques différences :
Le canal est bidirectionnel et peut être lu et écrit, tandis que les flux sont unidirectionnels.
La chaîne peut être lue et écrite de manière asynchrone.
La lecture et l'écriture du canal doivent passer par l'objet tampon.
2. Exemple
Utilisation de canaux et de tampons indirects pour compléter.
FileInputStream fis=null; //引用 FileOutputStream fout=null; FileChannel channel=null; //通道引用 FileChannel outchannel=null; try { fis = new FileInputStream("sb.jpg"); //源文件 fout = new FileOutputStream("bb.jpg"); //目标文件 channel = fis.getChannel(); //获取连接源文件的通道 outchannel = fout.getChannel(); //获取连接目标文件的通道 //指定缓冲区 非直接缓冲区 ByteBuffer buffer=ByteBuffer.allocate(1024); //创建缓冲区 用来传输数据 while(channel.read(buffer)!=-1) //从连接源文件的管道读取数据到缓冲区 { //将缓冲区反转 buffer.flip(); outchannel.write(buffer); //将缓冲区中的数据写入连接到目标文件的管道 buffer.clear(); //"清空"缓冲区 }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!