面向流,面向缓冲区,这是JAVA中的概念,和操作系统无关
具体怎么看呢,废话少说直接上源码
第一段是JAVA中的标准IO
java.net.SocketInputStream.read
int read(byte b[], int off, int length, int timeout) throws IOException { int n; // EOF already encountered if (eof) { return -1; } // connection reset if (impl.isConnectionReset()) { throw new SocketException("Connection reset"); } // bounds check if (length <= 0 || off < 0 || off + length > b.length) { if (length == 0) { return 0; } throw new ArrayIndexOutOfBoundsException(); } boolean gotReset = false; // acquire file descriptor and do the read FileDescriptor fd = impl.acquireFD(); try { n = socketRead(fd, b, off, length, timeout);//native函数 if (n > 0) { return n; } } catch (ConnectionResetException rstExc) { gotReset = true; } finally { impl.releaseFD(); } /* * We receive a "connection reset" but there may be bytes still * buffered on the socket */ if (gotReset) { impl.setConnectionResetPending(); impl.acquireFD(); try { n = socketRead(fd, b, off, length, timeout);//native函数,这里从内核态中读取数据到数组b中 if (n > 0) { return n; } } catch (ConnectionResetException rstExc) { } finally { impl.releaseFD(); } } /* * If we get here we are at EOF, the socket has been closed, * or the connection has been reset. */ if (impl.isClosedOrPending()) { throw new SocketException("Socket closed"); } if (impl.isConnectionResetPending()) { impl.setConnectionReset(); } if (impl.isConnectionReset()) { throw new SocketException("Connection reset"); } eof = true; return -1; }
相关推荐
在Linux操作系统中,标准输入/输出(Standard Input/Output,简称标准IO)是系统提供的一种基本I/O模型,用于程序与外部设备...通过对这个程序的学习,我们可以深入了解C语言在Linux环境下的文件操作和数据处理能力。
### JAVA IO操作总结——节点流和处理流 #### 一、概述 在Java中,输入/输出(Input/Output,简称IO)操作是一项非常重要的功能,它涉及到如何从不同的源读取数据以及如何向不同的目的地写入数据。Java IO体系主要...
本文将深入探讨如何通过使用I/O缓冲区来提升Java程序的I/O性能,并通过一个生物信息学领域的具体案例——基因序列搜索应用来进行说明。实验结果表明,通过合理地运用I/O缓冲技术,可以在某些情况下使Java程序的I/O...
1. **全缓冲(Full Buffering)**:默认情况下,大多数标准IO流采用全缓冲模式。在这种模式下,只有当缓冲区满或显式调用`fflush`函数或进程正常结束时,才会将数据刷新到磁盘。 2. **行缓冲(Line Buffering)**:...
本文将深入探讨Linux下IO口驱动的工作原理、实现方式以及如何通过编程来控制IO口的高低电平。 首先,理解Linux中的IO口。在计算机硬件中,输入/输出(Input/Output,简称IO)口是处理器与外部设备进行数据交换的...
本文总结了Java图书管理系统(IO流版)的主要知识点,涵盖了Java基础语法、流程控制、面向对象思想、封装、继承、多态、接口、异常、集合、IO流等多方面的知识。 一、Java基础语法 * 掌握Java的基本语法,包括变量...
3. **数据记录与分析**:在进行大量I/O操作时,`abu-1.0`可能能记录下每个操作的详细信息,并提供分析工具,以便后期分析I/O行为模式,找出潜在问题。 4. **命令行接口**:作为Linux工具,`abu-1.0`很可能支持...
本主题将深入探讨这两个重要领域,特别是针对"19——Linux的系统调用与文件IO(二)"这一视频教程内容进行详细阐述。 首先,让我们理解什么是系统调用。系统调用是用户程序与操作系统内核进行通信的唯一合法方式,它...
本讲座主要围绕"Linux文件IO编程"展开,由知名的教育机构华清远见出品,质量可靠,内容深入浅出。 首先,我们来了解一下Linux文件系统的基本概念。在Linux中,一切皆为文件,包括硬件设备、网络接口等,都被抽象为...
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...
了解并熟练掌握Python中的IO流操作是进行文件处理和数据持久化的基础,也是许多应用程序的核心部分。通过正确地使用`open()`函数和相关方法,开发者可以轻松地读取、写入和管理各种类型的文件。
了解这些层次及其工作原理对于深入理解Linux系统的IO机制至关重要。 1. **用户空间层**:应用程序通过标准的系统调用接口(如`read()`、`write()`等)来请求IO操作。 2. **文件系统层**:负责管理文件和目录的存储...
通过阅读这些文档,初学者可以更全面地了解Linux下的IO机制,以便在实际编程中选择最适合的方法。无论是标准IO还是文件IO,都各有优势,理解它们的特性并根据需求灵活运用是成为熟练的Linux程序员的关键。
《深入理解linux内核中文第三版》,高清晰扫描,真正中文第三版,对Linux 2.6内核进行了详细而细致的讲解。由于之前的压缩包分卷太多,现提供每一章的单独下载文件。100%高清晰第三版!
在Java中,IO流分为两大类:字节流和字符流,每种流又有输入流和输出流之分,分别用于数据的读取和写入。 1. **字节流**: - 字节流处理的是8位的字节数据,是最基本的流类型。Java中的`InputStream`和`...
`flush()`函数是另一个有用的工具,它允许我们在不关闭文件的情况下强制写入缓冲区中的数据到文件。这对于确保数据即时写入尤其有用,特别是当程序异常退出时,可以避免丢失未写入的数据。 总的来说,Python的IO流...
### Linux文件IO操作详解 #### 基本概念 Linux 文件 I/O 操作是学习 Linux 应用开发的基础,尤其对于初学者来说至关重要。本文旨在详细介绍 Linux 下的文件 I/O 操作及其相关概念。 #### 文件 在 Linux 系统中,...
### Java基础——IO流及File、RandomAccessFile对象 #### IO流概述 在Java中,IO流主要用于处理设备上的数据,这里的“流”可以被理解为数据的流动过程,即数据从一个地方移动到另一个地方的过程。Java中的IO流通过...
fgetc函数可能通过系统调用进入内核读1K字节到IO缓冲区中,然后返回IO缓冲区中的第一个字节给用户,把读写位置指向IO缓冲区中的第二个字符,以后用户再调fgetc,就直接从IO缓冲区中读取,而不需要进内核了,当用户把...
#### 二、块IO层——截获IO 块IO层是Linux内核中的一个重要组成部分,其主要职责是截获来自上层的IO请求,并对这些请求进行优化处理。这一层主要包括以下几个关键组件: 1. **bio_vec**:表示一组连续的数据块,...