java知识点---输入输出

Java 中的输入输出(I/O)是程序与外部世界(如用户、文件、网络、设备等)进行数据交换的基础功能。Java 提供了丰富的 I/O API 来支持各种类型的输入输出操作。以下是对 Java 中输入输出的主要概念、API 及使用场景的概述:

**1. 基本概念

  • 输入:指从外部获取数据的过程,如从键盘、文件、网络套接字等读取数据。
  • 输出:指向外部发送数据的过程,如向屏幕、文件、网络套接字等写入数据。

**2. 主要 API

标准输入输出

  • System.in:标准输入流,通常与键盘关联,可通过 InputStreamReaderBufferedReader 等进行字符读取。
  • System.outSystem.err:标准输出流和标准错误流,均与屏幕关联,通常使用 PrintStream 进行文本输出。

文件 I/O

  • java.io.File:表示文件或目录的路径,用于文件操作的辅助类。
  • java.io.FileInputStreamjava.io.FileOutputStream:用于读写二进制文件。
  • java.io.FileReaderjava.io.FileWriter:用于读写文本文件。
  • java.nio.file(Java 7 引入):提供更为现代、高效的文件 I/O API,如 Files 类和 Path 接口。

字符流与字节流

  • java.io.Readerjava.io.Writer:抽象类,分别代表字符输入流和字符输出流,如 BufferedReaderPrintWriter 等。
  • java.io.InputStreamjava.io.OutputStream:抽象类,分别代表字节输入流和字节输出流,如 FileInputStreamFileOutputStream 等。

缓冲流

  • java.io.BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter:为输入输出流提供缓冲功能,提高读写效率。

对象序列化

  • java.io.ObjectInputStreamjava.io.ObjectOutputStream:用于将 Java 对象序列化(写入)和反序列化(读取)到流中,实现对象的持久化存储或网络传输。

网络 I/O

  • java.net.Socketjava.net.ServerSocket:用于实现基于 TCP 协议的网络通信。
  • java.net.DatagramSocketjava.net.DatagramPacket:用于实现基于 UDP 协议的网络通信。
  • java.nio.channels(Java NIO):提供非阻塞的网络 I/O 支持,如 SocketChannelServerSocketChannel 等。

**3. 使用场景

  • 标准输入输出:与用户交互,如从控制台读取用户输入,向控制台输出程序信息。
  • 文件 I/O:读写硬盘上的文件,如文本文件、图片、音频、视频等。
  • 字符流与字节流:处理文本数据或二进制数据,如读写 XML、JSON 文件,下载或上传文件等。
  • 缓冲流:提高读写效率,减少系统调用次数。
  • 对象序列化:将对象状态保存到磁盘或通过网络传输对象,如保存游戏进度、实现 RPC(Remote Procedure Call)等。
  • 网络 I/O:实现客户端与服务器之间的通信,如 Web 客户端与服务器、邮件客户端与服务器、即时通讯软件等。

**4. Java 7 NIO.2(New I/O 2)

Java 7 引入了 NIO.2(New I/O 2),提供了更高级、更强大的 I/O 功能,包括:

  • 异步 I/O:通过 AsynchronousSocketChannelAsynchronousServerSocketChannel 等实现非阻塞的异步网络通信。
  • 文件锁定:通过 FileChannel.lock() 等方法实现文件的共享或独占锁定。
  • 文件属性与元数据:通过 Files 类的静态方法获取文件的各种属性(如大小、最后修改时间、权限等)和元数据。
  • 路径与文件系统Path 接口和 FileSystem 类提供了与文件系统路径和特性相关的操作。

总之,Java 中的输入输出涵盖了与外部数据交换的各种场景,提供了丰富的 API 来满足不同需求。从标准输入输出到文件 I/O、网络通信,再到高级的 NIO.2 功能,Java I/O 系统为开发者构建健壮、高效的软件提供了坚实的基础。在实际编程中,应根据具体需求选择合适的 I/O 类型和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

过氧化氢滴定方法可用的PFA器皿有哪些?

滴定液:KMnO4标准溶液 试液:H2O2商品液(3%),H2SO4 (3.0mol/L ) 指示剂:酚酞指示剂 仪器:分析天平,PFA酸式滴定管50mL,PFA 移液管10mL/25mL、PFA 容量瓶250mL、PFA锥形瓶250mL 1、KMnO4标准溶液浓度的标定(见实验:高锰酸钾标准溶液的配制与…

ES6 常用语法

目录 1. 声明变量: let 和 const(无变量提升,块级作用域,不可重复声明) 2. 箭头函数 3. 模板字符串,${} 4. 解构赋值 5. 默认参数 6. 展开运算符 7. 类和继承 8. Promise 对象 1. 声明变量: let 和 const&…

nodejs工具脚本json转excel

json转excel 主要使用 sheetjs 库 vim convertJsonToExcel.js 封装转换方法 import fs from fs; import XLSX from xlsx;/*** 扁平化嵌套json对象* param {Object} jsonObj* param {String} prefix* returns*/ export function flattenKeys(jsonObj, prefix ) {const resul…

java-springmvc 01

MVC就是和Tomcat有关。 01.MVC启动的第一步,启动Tomcat 02.Tomcat会解析web-inf的web.xml文件

桐乡上元会计——管理会计在企业中的价值

1.管理会计处于企业价值管理的核心地位 从管理会计与财务会计的对比中不难看出,管理会计在企业中应占有非常重要的地位。管理会计是社会生产力进步、管理水平提高的结果,也是一门有助于提高经济效益的科学。在西方的企业中,会计机构隶属于支…

战姬物语部署

一.准备环境 #关闭seliunx和防火墙 setenforce 0 systemctl stop firewalld systemctl disable firewalld #配置源,并安装常用工 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo …

通达信-主力预警源码及使用方法(指标叠加使用)手机电脑均可

指标用法介绍 1.指标盘中预警适合盘中抓涨停和**适合超短和短线操作**。实盘预警有一定的概率抓到涨停个股,跟主力吃肉,不过也并非所有信号都能涨停,根据实盘跟踪观察来看,当天不涨停的个股大部分第二天第三天都能有比较安全的点位出局。也有比较多的信号,后续很多天的表…

Nginx出现403 Forbidden、404 Not Found错误的解决方案

一、Docker创建Nginx容器 Docker命令 docker run -d \--name nginx \-p 80:80 \-v /root/nginx/dist:/usr/share/nginx/html \-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \nginxnginx.conf worker_processes 1;events {worker_connections 1024; }http {include …

Spring Task 定时任务(含结合cron 表达式)

目录 一、Spring Task的介绍 二、使用方法 2.1 配置类启用定时任务支持: 2.2 同步定时任务 ​编辑2.3 fixedRate 可以看出不能满足我们的日常需求 那如何让其开启异步呢(开启多个线程工作) 三、Spring Task 结合cron表达式 3.1 corn 表…

【动态规划】dp 路径问题(不同路径、路径最小和、地下城游戏...)

文章目录 1. 前言 - 理解动态规划算法1.5 关于dp路径问题2. 例题2.1_不同路径Warning. 关于状态表示 3. 算法题3.1_不同路径II3.2_珠宝的最高价值3.3_下降路径最小和3.4_最小路径和3.5_地下城游戏关于状态表示的两种选法: 1. 前言 - 理解动态规划算法 关于 动态规划…

超越GPT-4V,苹果多模态大模型上新,神经形态计算加速MLLM(一)

4月8日,苹果发布了其最新的多模态大语言模型(MLLM )——Ferret-UI,能够更有效地理解和与屏幕信息进行交互,在所有基本UI任务上都超过了GPT-4V! 苹果开发的多模态模型Ferret-UI增强了对屏幕的理解和交互&am…

做生意能只用电子名片吗?

做生意,收到纸质名片是不可避免的,电子名片不可能完全能代替纸质名片,如果想方便管理纸质名片的话,将名片拍照转为Excel是一种不错的方案,它可以让我们方便地通过表格筛选或搜索需要的信息,极大地提高了信息…

cdh cm界面HDFS爆红:不良 : 该 DataNode 当前有 1 个卷故障。 临界阈值:任意。(Linux磁盘修复)

一、表现 1.cm界面 报错卷故障 检查该节点,发现存储大小和其他节点不一致,少了一块物理磁盘 2.查看该磁盘 目录无法访问 dmesg检查发现错误 dmesg | grep error二、解决办法 移除挂载 umount /data10 #可以移除挂载盘,或者移除挂载目…

【C语言】深入解析选择排序算法

一、算法原理二、算法性能分析三、C语言实现示例四、总结 一、算法原理 选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是不断地选择剩余元素中的最小(或最大)元素,放到已排序的序列的末尾&#xff…

RCE漏洞及其绕过——[SWPUCTF 2021 新生赛]easyrce、caidao、babyrce

目录 什么是Shell 1、Shell简介 2、印刷约定 一、什么是RCE 漏洞产生条件: 漏洞检测: 1.远程命令执行 system()函数: passthru()函数: exec()函数: 无回显 shell_exec()函数: 2.远程代码执行 e…

【算法刷题day28】Leetcode:93.复原IP地址 78.子集 90.子集II

93.复原IP地址 文档链接:[代码随想录] 题目链接:93.复原IP地址 题目: 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,…

【React】Ant Design自定义主题风格及主题切换

Ant Design 的自定义主题,对于刚入手的时候感觉真是一脸蒙圈,那今天给它梳理倒腾下; 1、自定义主题要点 整体样式变化,主要两个部分: 1.1、Design Token https://ant.design/docs/react/customize-theme-cn#theme 官…

2024信友队智灵班春季 Test1 总结

4月模考 死亡回放 模考时间线 1:30 比赛开始,读 T1 宇宙爆炸 的题1:50 自己手模了几组样例,得出了一个错误结论,打出了第一版错误代码,然后上交( Wrong Answer 20 \color{red}\text{Wrong\ Answer\ 20} Wrong Answer …

【Vue 异步更新和 $nextTick】

文章目录 异步更新机制$nextTick 方法 异步更新机制以及 $nextTick 方法都与 Vue 的响应式系统密切相关,对于开发高效、流畅的应用至关重要。 异步更新机制 Vue 的数据更新是异步执行的。修改 Vue 实例的数据时,Vue 并不会立即更新 DOM。它将数据变更放…

每日一题(PTAL2-008):最长对称子串--分类讨论+遍历

最长对称子串的长度有可能是奇数也有可能是偶数&#xff0c;因此在遍历时要同时考虑这两种情况。 #include<bits/stdc.h> using namespace std;int main() {string s;getline(cin,s);int n s.size();int res 0; // 初始化为0&#xff0c;因为空字符串也是对称的for (i…