
Java IO
文章平均质量分 90
zhangzeyuaaa
这个作者很懒,什么都没留下…
展开
-
深入解析 I/O 模型:原理、区别与 Java 实践
BIO:简单但性能差,适合低频场景。非阻塞 I/O:需主动轮询,效率低下,实际较少直接使用。I/O 多路复用:高并发场景的黄金标准,Java NIO 的核心实现。AIO:理论最优,但受限于操作系统和编程复杂度。技术选型建议大多数场景下,I/O 多路复用(NIO)是最佳选择。若需极致性能且系统支持,可尝试异步 I/O(如 Linuxio_uring传统 BIO 仅适用于原型开发或低并发场景。原创 2025-05-13 22:00:30 · 829 阅读 · 0 评论 -
简单说一下阻塞IO、非阻塞IO、IO复用的区别
在《Unix网络编程》一书中提到了五种IO模型,分别是:阻塞IO、非阻塞IO、IO复用、信号驱动IO以及异步IO。本篇文章主要介绍IO的基本概念以及阻塞IO、非阻塞IO、IO复用三种模型,供大家参考学习。对于计算机而言,任何涉及到计算机核心(CPU和内存)与其他设备间的数据转移的过程就是IO。IO设备:比如我们最常见的打印机、鼠标、键盘。对IO设备的数据读写。阻塞IO模型会阻塞较长时间;非阻塞IO在等待数据报的过程中,进程并没有阻塞,它可以做其他的事情;转载 2025-05-13 21:49:52 · 19 阅读 · 0 评论 -
关于Java IO
Java IO 只能处理纯文本文档,对于其他类型的文档,比如说word,是不能直接读取的,因为我们不知道word的内部细节。原创 2013-12-15 12:12:49 · 1055 阅读 · 0 评论 -
【NIO】通过FileChannel读取包含中文内容的文件
直接上代码:package com.xx.nio;import java.io.File;import java.io.FileInputStream;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.channels.FileChannel;import java.nio.charset.Ch原创 2017-04-15 16:53:44 · 2941 阅读 · 2 评论 -
操作系统IO模型
目前IO模型主要经历了以下五种:1)阻塞IO2)非阻塞IO3)IO复用(select和poll)4)信号驱动IO(sigio)5)异步IO(aio_) 内核空间和用户空间:由于操作系统都包括内核空间和用户空间(或者说内核态和用户态),内核空间主要存放的是内核代码和数据,是供系统进程使用的空间。而用户空间主要存放的是用户代码和数据,是供用户进程使用的空间。目前Linu转载 2015-01-11 11:31:48 · 6002 阅读 · 1 评论 -
Java中的BIO、NIO、AIO(NIO2)
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙转载 2016-01-14 21:50:15 · 11741 阅读 · 4 评论 -
【JavaIO】Java内存流
Java提供了三组内存流,它们是:字节数组流:ByteArrayInputStream/ByteArrayOutputStream字符数组流:CharArrayReader/CharArrayWriter字符串流:StringReader/StringWriter它们都是节点流,数据源都是内存中的一块数据。字节数组流package com.zzj.io;import j原创 2015-01-10 18:29:31 · 3134 阅读 · 0 评论 -
【Java IO】NIO复制文件
package com.zzj.nio;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;public class FileC原创 2015-01-11 15:56:34 · 1151 阅读 · 0 评论 -
【JavaIO】JavaIO流分类
Java中的流,可以从不同的角度进行分类。按照数据流的方向不同可以分为:输入流和输出流。按照处理数据单位不同可以分为:字节流和字符流。按照实现功能不同可以分为:节点流和处理流。输出流:输入流:因此输入和输出都是从程序的角度来说的。字节流:一次读入或读出是8位二进制。字符流:一次读入或读出是16位二进制。字节流和字符流的原理是相同的,只不过原创 2014-11-30 12:54:52 · 1746 阅读 · 0 评论 -
Java字节流和字符流的转换器:StreamDecoder
我们的机器只会读字节码,而我们人却很难读懂字节码,所以人与机器交流过程中需要编码解码。InputStreamReader及其子类FileReader:(从字节到字符)是个解码过程;OutputStreamWrite及其子类FileWriter:(从字符到字节)是个编码过程。InputStreamReader这个解码过程中,最主要的就是StreamDecoder类转载 2013-12-16 16:09:48 · 4992 阅读 · 0 评论 -
深入了解字符集和编码问题
一、什么是字符集?什么是编码? 字符(Character)是文字与符号的总称,包括文字、图形符号、数学符号等。 一组抽象字符的集合就是字符集(Charset)。 字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。 一组有共同特征的字符也可以组成字符集,比如繁体汉字字符集、日文汉字字符集。 字符集的子集也是字符转载 2013-12-15 20:02:03 · 691 阅读 · 0 评论 -
java字节流与字符流的区别
InputStream,OutputStream,Reader,Writer 1. InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象, 2. Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串. 字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或转载 2013-12-16 15:52:10 · 750 阅读 · 0 评论 -
把内存中的字符串以文本文件方式写入硬盘
方法一:以字节流的形式写入String src = "Wellcom to China!欢迎来到中国!";String file = "F:\\Hello.txt";InputStream in = new StringBufferInputStream(src);OutputStream out = new FileOutputStream(file);byte[] b = new原创 2013-12-15 16:36:59 · 2913 阅读 · 0 评论 -
Java复制文件
package zzj.test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;public class FileCopy { /** * @pa原创 2013-12-15 15:15:30 · 960 阅读 · 0 评论 -
将硬盘上的文本文件的内容输出到控制台
一:以字符流的形式输出String file = "F:\\Hello.txt";InputStream in = new FileInputStream(file);byte[] b = new byte[1];while(in.read(b) > -1){ String s = new String(b); System.out.print(s);}in.close();此方原创 2013-12-15 16:45:06 · 1978 阅读 · 0 评论