25.2.8小记

news/2025/2/8 17:38:11/文章来源:https://www.cnblogs.com/Ryanjxy/p/18704193

流是输入输出的方式

1.流是一维(用一个数字可以表示其在流中的地方)且单向的

System.out.println("hello");

其中out这个成员就是某种用来输出的流


其中inputstream和outputstream只是把外面的输入当作字节流来看待(只能做字节层面上的读和写)


这个报错:所有IO的操作都存在分解,其中read不一定用在System.in(所有的read的操作都带着exception)
解决方法 : 放到try-catch中用异常捕捉

package kcb;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class Main {public static void main(String[] args) {System.out.println("Hello World!");byte[] buf = new byte[10];for(int i=0;i<10;i++){buf[i] = (byte)i;}try {FileOutputStream out = new FileOutputStream("test.txt");out.write(buf);out.close();}catch (FileNotFoundException e) {throw new RuntimeException(e);}catch (IOException e) {throw new RuntimeException(e);}}
}

文件

流过滤器

DataOutputStream需要建立在别的流的基础上

其中先给FileOutputStream加一个缓冲流(bufferedOutputStream),再在缓冲外面接一个DataOutputStream

package kcb;import java.io.*;public class Main {public static void main(String[] args) {System.out.println("Hello World!");byte[] buf = new byte[10];for(int i=0;i<10;i++){buf[i] = (byte)i;}try {DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("test.txt")));int i = 0xcafebabe;out.writeInt(i);out.close();}catch (FileNotFoundException e) {throw new RuntimeException(e);}catch (IOException e) {throw new RuntimeException(e);}}
}

读出

package kcb;import java.io.*;
import java.util.Date;public class Main {public static void main(String[] args) {System.out.println("Hello World!");byte[] buf = new byte[10];for(int i=0;i<10;i++){buf[i] = (byte)i;}try {DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("test.txt")));int i = 0xcafebabe;out.writeInt(i);out.close();DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("test.txt")));int j = in.readInt();System.out.println(Integer.toHexString(j));}catch (FileNotFoundException e) {throw new RuntimeException(e);}catch (IOException e) {throw new RuntimeException(e);}}
}

文本流

当文件本身不是Unicode时,我们需要借助stream,由stream去打开文件,在stream的基础上以过滤流的方式,去建立Reader和Writer

其中OutputStreamWriter是一个桥梁,其输入是一个Stream,输出是一个Writer

package kcb;import java.io.*;
import java.util.Date;public class Main {public static void main(String[] args) {System.out.println("Hello World!");byte[] buf = new byte[10];for(int i=0;i<10;i++){buf[i] = (byte)i;}try {PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("a.txt"))));int i = 123456;out.println(i);out.close();BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("src/kcb/Main.java")));String line;while ((line = in.readLine()) != null) {System.out.println(line);}}catch (FileNotFoundException e) {throw new RuntimeException(e);}catch (IOException e) {throw new RuntimeException(e);}}
}

其中

  String line;while ((line = in.readLine()) != null) {System.out.println(line);}}

这段代码将这个Main代码程序读取了出来
in.readLine函数会返回一个string,若读到了流的末尾,会返回一个null

汉字编码

eclipse中默认为GBK编码

GBK18030 : 国标码
Unicode
utf-8编码 : 即采用了Unicode的编码保证在各种平台都通用,有保证英文字母采用比较短的编码形式

    BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("utf8.txt"),"utf8"));

可以用这样的方式告诉java具体编码类型

格式化输入输出

判断流程图 :

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

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

相关文章

发那科焊接机器人M-10iA维修总结

发那科作为工业机器人制造商,其焊接机器人产品广泛应用于各种工业领域。然而,随着时间的推移,焊接机器人可能会出现故障,因此了解发那科焊接机器人M-10iA维修知识显得尤为重要。 一、日常法那科机械手维护 1. 定期检查:定期检查FANUC焊接机械手M-10iA的各个部件,如驱动系…

【金牌老会/EI检索稳定/高校学会主办】第十三届工程管理国际学术研讨会(ISPM 2025)诚邀您投稿参会

征文通知 会议简介为推动工程管理领域的创新和发展,增进工程管理界同行间的相互了解与交流,“第十三届工程管理国际学术研讨会(ISPM 2025) ”将于 2025 年6月在北京举办,本次会议由北京工程管理科学学会、北京建筑大学、太原科技大学和湖北省众科地质与环境技术服务中心共…

基于 API 网关践行 API First 开发实践

API 是连接数字生态系统中各应用的桥梁,是提升企业效率和数字化体验的关键。而 API First 开发模式的核心在于:以 API 为先,将其视为“头等公民”,在构建应用、服务及集成之前,应优先定义并设计 API 及其配套。API First 作为一种相对较新的开发模式,它已逐渐流行并获得业…

docker单机部署kafka

docker单机部署kafka 官方镜像地址:apache/kafka - Docker 镜像 |Docker 中心 官方给的命令,部署之后,用工具访问不了:services:broker:image: apache/kafka:latestcontainer_name: brokerenvironment:KAFKA_NODE_ID: 1KAFKA_PROCESS_ROLES: broker,controllerKAFKA_LISTEN…

并发编程 - 线程同步(五)之原子操作Interlocked详解二

学习Interlocked类其他方法,包括Exchange、CompareExchange的泛型和非泛型版本,用于原子更新变量并获取旧值,实现锁机制和CAS算法;And、Or方法用于原子按位操作;MemoryBarrier方法用于执行内存屏障。上一章我们学习了原子操作Interlocked类的几个常用方法,今天我们将继续…

十大MES软件厂家推荐:聚焦珠海盈致

在制造业数字化转型的浪潮中,制造执行系统(MES)作为连接企业资源计划(ERP)与车间自动化系统的桥梁,扮演着至关重要的角色。它不仅能够优化生产流程,提高生产效率,还能确保产品质量,降低运营成本。在众多的MES软件厂家中,珠海盈致凭借其专业的解决方案和深厚的行业经验…

[2025青海民族大学新生赛] re misc crypto _部分wp

re 你的flag被加密啦! 可以直接改源码点击查看代码 def custom_encrypt(plaintext):encrypted = ""key = [3, 5, 2]key_index = 0for char in plaintext:if a <= char <= z:shift = key[key_index]new_char = chr((ord(char) - ord(a) - shift) % 26 + ord(a)…

库卡机械臂控制柜维修高效方法

在工业自动化领域,库卡(KUKA)机器人以其卓越的性能和广泛的应用领域而备受推崇。然而,作为精密复杂的机械设备,库卡机器人控制柜在长时间运行过程中难免会遇到各种故障。因此,及时进行KUKA工业机械手控制器维修和保养,确保控制柜的正常运行,对于保障整个生产线的效率至…

浏览器消息循环

浏览器事件循环的完整与准确叙述(依据 W3C/WHATWG 规范)一、核心机制 JavaScript 的 单线程模型 通过 事件循环(Event Loop) 管理异步操作,其设计核心如下:非阻塞执行:允许主线程在等待 I/O、定时器等操作时继续处理其他任务。 优先级调度:任务(Task) 与 微任务(Mic…

深入剖析实体-关系模型(ER 图):理论与实践全解析

title: 深入剖析实体-关系模型(ER 图):理论与实践全解析 date: 2025/2/8 updated: 2025/2/8 author: cmdragon excerpt: 实体-关系模型(ER 模型)是一种用于描述现实世界中对象及其关系的概念模型,作为数据库设计的重要工具,ER 模型以图形方式表示数据之间的联系。通过…

系统调用之SysWhispers

一、介绍 SysWhispers 是一个通过直接系统调用绕过系统调用钩子的工具。SysWhispers 有多个版本,具有不同的特性。本文将分析各个版本之间的改进。SysWhispers是64 位系统生成了支持直接系统调用的头文件/ASM 文件植入。它支持从 Windows XP 到 Windows 10 19042(20H2)的系统…

服务部署操作之nssm

1、使用背景: 之前在windows server IIS管理器中部署程序操作复杂,参考各位大佬以后发现还有更好的方法;2、nssm介绍: 作为服务封装程序,可以将exe封装成服务,实现开机自启动,简单易上手,功能强大;3、nssm配置详情: 官网地址:https://nssm.cc/download 下载完成以后…