java读取输出流_Java输入输出流

article/2025/9/12 15:18:58

1什么是IO

Java中I/O操作主要是指使用Java进行输入,输出操作。Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。

Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。

流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。

Java IO模型:

Java的IO模型设计非常优秀,它使用Decorator模式,按功能划分Stream,你可以动态装配这些Stream,以便获得你需要的功能。例如,你需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。

2数据流的基本概念

数据流是一串连续不断的数据的集合,就像水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。

“流是磁盘或其它外围设备中存储的数据的源点或终点。”

在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条,缓存是在CPU里面的。外存的存储量最大,其次是内存,最后是缓存,但是外存的数据的读取最慢,其次是内存,缓存最快。

这里总结从外存读取数据到内存以及将数据从内存写到外存中。对于内存和外存的理解,我们可以简单的理解为容器,即外存是一个容器,内存又是另外一个容器。那又怎样把放在外存这个容器内的数据读取到内存这个容器以及怎么把内存这个容器里的数据存到外存中呢?

在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:

标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据从外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。

总结的基本概念如下:

1) 数据流:

一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。

3bb85d261cafdbebc6002367a05b3ffd.png2) 输入流(Input Stream):

程序从输入流读取数据源。数据源包括外界(键盘、文件、网络…),即是将数据源读入到程序的通信通道

02957a11194de985e5e865e8702db08d.png3) 输出流:

程序向输出流写入数据。将程序中的数据输出到外界(显示器、打印机、文件、网络…)的通信通道。

2228e2ba8122c173bcce02733149cfc1.png

采用数据流的目的就是使得输出输入独立于设备。

Input Stream不关心数据源来自何种设备(键盘,文件,网络)

Output Stream不关心数据的目的是何种设备(键盘,文件,网络)

4) 数据流分类:

流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此Java中的流分为两种:

1) 字节流:数据流中最小的数据单元是字节

2) 字符流:数据流中最小的数据单元是字符,Java中的字符是Unicode编码,一个字符占用两个字节。

流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。

3标准I/O

Java程序可通过命令行参数与外界进行简短的信息交换,同时,也规定了与标准输入、输出设备,如键盘、显示器进行信息交换的方式。而通过文件可以与外界进行任意数据形式的信息交换。

3.1 命令行参数

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classTestArgs {public static voidmain(String[] args) {for (int i = 0; i < args.length; i++) {

System.out.println("args[" + i + "] is ");

}

}

}

View Code

运行效果:

a294cf68d0d5d7d16db460be9088e6a0.png

3.2 标准输入,输出数据流

java系统自带的标准数据流:java.lang.System:

java.lang.Systempublic final class System extendsObject{static PrintStream err;//标准错误流(输出)

static InputStream in;//标准输入(键盘输入流)

static PrintStream out;//标准输出流(显示器输出流)

}

注意:①System类不能创建对象,只能直接使用它的三个静态成员。②每当main方法被执行时,就自动生成上述三个对象。

1)标准输出流 System.out

System.out向标准输出设备输出数据,其数据类型为PrintStream。方法:

Void print(参数)

Void println(参数)

2)标准输入流 System.in

System.in读取标准输入设备数据(从标准输入获取数据,一般是键盘),其数据类型为InputStream。方法:

int read()  //返回ASCII码。若返回值为-1,说明没有读取到任何字节,读取工作结束。

int read(byte[] b) //读入多个字节到缓冲区b中,返回值是读入的字节数。

3)标准错误流

System.err输出标准错误,其数据类


http://chatgpt.dhexx.cn/article/7FCr5DcK.shtml

相关文章

Java 输入输出流学习总结

文章目录 前言&#xff1a;为什么要有输入输出流一、Java 的标准输入输出标准输入 System.in标准输出 System.out程序 exp8_3&#xff1a;简单的输入输出 二、输入输出流框架三、输入输出流类的应用课本程序 exp8.4改写 exp8.4(1)改写 exp_8.4(2) 四、RandomAccessFile 类输入输…

java 输入输出流

java I/O流 在java中所有数据都是使用流读写的。流是一组有序的数据序列&#xff0c;将数据从一个地方带到另一个地方。根据数据流向的不同&#xff0c;可以分为输入&#xff08;Input&#xff09;流和输出&#xff08;Output&#xff09;流两种。 为什么要使用输入输出流 例…

Java(2)-Java IO输入输出流

一.什么是IO Java中I/O操作主要是指使用Java进行输入&#xff0c;输出操作. Java所有的I/O机制都是基于数据流进行输入输出&#xff0c;这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读…

Java——输入输出

本篇主要介绍Java的输入与输出&#xff0c;当然&#xff0c;这里说的是控制台下的输入与输出&#xff0c;窗口程序的设计将会再后续篇章中有详细说明。   Java的输出很简单&#xff0c;调用System.out.println()即可打印输出你想要输出的内容。我们之前也已经看到过。调用pr…

C语言之static关键字详解

目录 前言&#xff1a; 一、几个概念 1.变量 2.局部变量和全局变量 3.变量的作用域 4.变量的生命周期 二、static关键字的作用 三、static关键字修饰局部变量 四、static关键字修饰全局变量 五、static关键字修饰函数 写在最后&#xff1a; 前言&#xff1a; static&am…

static关键字你真的懂了吗?

文章目录 static关键字1、Java中的static1.1 static关键字的定义和性质1.2 实例变量与静态变量1.2.1 实例变量1.2.2 静态变量 1.3 静态代码块1.4 *实例语句块 / 代码块1.5 static总结1.5.1 对java语句的解读1.5.2 什么时候定义为静态的&#xff1f; 2、C/C中的static2.1 局部变…

C语言extern和static关键字详解

C语言extern和static关键字详解 文章目录 1 前言2 作用域2.1 代码块作用域2.2 文件作用域 3 存储类型4 链接属性5 extern和static关键字5.1 extern关键字5.2 static关键字 1 前言 在讲extern和static关键字前&#xff0c;先讲几点相关的基础知识——作用域、存储类型、链接属性…

什么是static关键字

什么是static关键字 static关键字我们经常接触&#xff0c;不过我们一直没有讨论过它到底是什么&#xff0c;有什么具体的作用&#xff0c;那static关键字是什么呢&#xff0c;有啥用呢&#xff1f; static是静态的意思&#xff0c;是一个修饰符&#xff0c;就像是一个形容词&…

static关键字(java)

一、static的用途 1.static修饰的变量和方法是属于类的&#xff1b; 2.static修饰的变量和对象&#xff0c;方法存储在方法区的静态常量池中&#xff1b;是共享的&#xff1b; 3.可以在没有创建任何对象的前提下&#xff0c;仅仅通过类本身来调用static方法 4.static修饰的…

static关键字的用法

static关键字用法 目录 一.概述二.使用动机三.使用方法 static关键字修饰类static关键字修饰方法static关键字修饰变量static关键字修饰代码块 一. 概述 > static是一个静态修饰符关键字&#xff0c;表示静态的意思&#xff0c; ①方便在没有创建对象的情况下进行调用。可…

static 关键字用法总结

一、static 关键字的含义 static是Java50个关键字之一。static关键字可以用来修饰代码块表示静态代码块&#xff0c;修饰成员变量表示全局静态成员变量&#xff0c;修饰方法表示静态方法。(注意&#xff1a;不能修饰普通类&#xff0c;除了内部类&#xff0c;这是为什么&#…

java static关键字的作用是什么_static关键字有什么作用

今天主要学习下Java语言中的static关键字。 static关键字的含义及使用场景 static是Java50个关键字之一。static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法。(注意:不能修饰普通类,除了内部类,这是为什么?)class A …

static关键字的作用

目录 C语言中static关键字的作用 1.static关键字修饰局部变量 2.static关键字修饰全局变量 3.static关键字修饰函数 在C中static关键的作用 1.静态成员变量 2.静态成员函数 C语言中static关键字的作用 1.static关键字修饰局部变量 概念&#xff1a; static修饰局部变量就…

静态关键词:static

static关键字的作用 static是静态的意思&#xff0c;可以修饰成员变量&#xff0c;表示给成员变量只在内存中存储一份&#xff0c;可以被共享访问、修改 成员变量可以分为2类1、静态成员变量&#xff08;有static修饰&#xff0c;属于类&#xff0c;内存中加载一次&#xff…

C# -- static 关键字

一、static关键字 static 关键字&#xff0c;用于修饰类&#xff0c;字段&#xff0c;属性&#xff0c;方法&#xff0c;构造方法等。被 static 修饰的类称之为“静态类”&#xff1b; 被 static 修饰的成员称之为“静态成员”&#xff0c;被修饰过的成员分别称为&#xff1a;…

static关键字详解

1.概述&#xff1a; static&#xff1a;就是多个对象共享同一份数据 一个类的不同对象有些共享的数据&#xff0c;这样我们就可以使用static来修饰 一旦使用了static关键字&#xff0c;那么这样的内容不再属于对象&#xff0c;而是属于类的&#xff0c;所以凡是本类的对象&…

在 C/C++中 static 关键字详解

static 关键字详解 C/C 中的 static1. 静态局部变量2. 静态全局变量全局变量 与 extren 3. static 修饰函数 C的 static 成员静态成员变量const修饰的成员除外 静态成员函数 总结&#xff1a; static是 C/C中的关键字之一&#xff0c;是常见的函数与变量&#xff08;C中还包括类…

Windows添加路由的方法

假设本来的局域网网关是192.100.10.1&#xff0c;现在要访问网关是192.100.20.0的服务器&#xff0c;可以手动添加路由。 方法&#xff1a; 1.以管理员的身份打开cmd命令窗口 2.输入 route add 192.100.20.0 mask 255.255.255.0 192.100.10.1 -p&#xff08;最后加上-p就是…

如何在 Linux 上添加路由?

在 Linux 系统中&#xff0c;路由是网络通信的关键组件之一。通过添加路由&#xff0c;您可以指定数据包在网络中的传输路径&#xff0c;从而实现网络连接和数据转发。本文将详细介绍如何在 Linux 上添加路由&#xff0c;以便您可以根据需要配置网络路由并实现灵活的网络连接。…