Java中NIO和BIO的区别?代码举例

时间2023-03-11 10:04:38 提问来自 Kuala Lumpur吉隆坡 的网友 分类ChatGPT提问 浏览254 热度0
? BIO(Blocking IO)是传统的IO模型,它是阻塞式的模式。当一个线程调用read()/write()方法时,该线程会被阻塞直到有数据可读/写。 NIO(Non-blocking IO)是新出的IO模型,它是非阻塞式的模式。当一个线程调用read()/write()方法时,如果数据还未准备好就会立即返回。 代码举例: BIO: import java.io.*; public class BIODemo { public static void main(String[] args) throws Exception { // 声明一个字节流对象 InputStream in = null; try { // 定义文件名及文件对应的字节流对象 in = new FileInputStream("test.txt"); // 声明一个字节数组,大小为1024字节,即1KB大小 byte[] b = new byte[1024]; // 读取刚才声明的字节流中内容,并放入刚才声明的字节数组中,read方法将返回读取到的字节量大小 int len = in.read(b); // 打印出从0位开始,读取len个字节量大小的内容 System.out.println("内容:"+new String(b, 0 ,len)); } catch (Exception e) { e.printStackTrace(); } finally{ if (in != null){ in.close(); } } } } NIO: import java.io.*; import java.nio.*; import java.nio.channels.*; public class NIODemo { public static void main(String[] args) throws Exception { FileInputStream fin=new FileInputStream("test1"); FileChannel fcin=fin.getChannel(); ByteBuffer buff=ByteBuffer .allocateDirect (1024); while(true){ buff .clear (); int r=fcin .read (buff ); if (r==-1 ){ break ; } buff .flip (); while (buff .hasRemaining ()){ System .out .print (( char )buff .get ()); }} fin .close (); }}

AI智能问答网免责声明:
以上内容除特别注明外均来源于网友提问、ChatGPT回答,权益归原著者所有,本站仅作效果演示和欣赏之用;
若以上展示有冒犯或侵害到您,敬请联系我们进行删除处理,谢谢!

上一篇 裤子怎么样设计适合xo型腿 下一篇 搜索框的用法